3 个版本

0.0.6 2022年3月20日
0.0.5 2019年1月22日
0.0.4 2018年11月29日
0.0.3 2018年10月17日
0.0.1 2018年9月28日

#1075 in 网页编程

每月 25 下载

MIT 许可证

57KB
1.5K SLoC

annict-rs

Build Status Build status crates.io

日语: README-ja.md

Rust 的 Annict API 客户端库。

Annict 是一个制作和管理观看动漫生活的网页服务。

用法

将此内容添加到您的 Cargo.toml

[dependencies]
annis = "0.0.6"

并将此内容添加到您的 crate 根目录

extern crate annis;

以下是从获取 access_token 到对 /v1/works 发起请求的示例代码。

・异步示例

use annis::nonblocking::Client;
use annis::{ OAuth, Value, Error };
use tokio;

#[tokio::main]
async fn main() -> Result<(), Error> {

	let auth = OAuth::client_id("client_id");
	let url = auth.authorize_url().redirect_uri("https://example.com").scope("read+write").build();

	// Get a certification code.

	let access_token = auth
	.access_token()
	.client_secret("client_secret_key")
	.code("認証コード")
	.build();

	let client = Client::set_token(access_token);
	let works = annis::works().params(vec![("filter_title", "lain")]);

	let json = client.call(works).await?.json::<Value>().await?;

	assert_eq!(json["works"][0]["title"], "serial experiments lain".to_string());

    Ok(())
}

・同步示例

use annis::{OAuth, Client , Value, Error };

fn main() -> Result<(), Error> {

	let auth = OAuth::client_id("client_id");
	let url = auth.authorize_url().redirect_uri("https://example.com").scope("read+write").build();

	// Get a certification code.

	let access_token = auth
	.access_token()
	.client_secret("client_secret_key")
	.code("認証コード")
	.build();

	let client = Client::set_token(access_token);
	let works = annis::works().params(vec![("filter_title", "lain")]);

	let json = client.call(works)?.json::<Value>()?;

	assert_eq!(json["works"][0]["title"], "serial experiments lain".to_string());

    Ok(())
}

认证请求以两种方式创建:方法或创建结构体。

use annis::{OAuth, AuthorizeUri, AccessToken};
// Please use nonblocking module in case of asynchronous request.
// use annis::nonblocking::{OAuth, AuthorizeUrl, AccessToken};

	let auth = OAuth::client_id("client_id");

// Get Authorize URL
	let instant = auth.authorize_url().build();

	let manual = AuthorizeUrl{
			client_id: "client_id".to_string(),
			redirect_uri: "urn:ietf:wg:oauth:2.0:oob".to_string(),
			scope: "read".to_string()
		}.build();

	assert_eq!(instant, manual);


// Get AccessToken
	let instant = auth
	.access_token()
	.client_secret("client_secret_key")
	.code("certification code")
	.build();

    let manual = AccessToken{
    		client_id: "client_id".to_string(),
    		client_secret: "client_secret_key".to_string(),
    		code: "certification code".to_string(),
    		redirect_uri: "urn:ietf:wg:oauth:2.0:oob".into()
    	}.build();

	assert_eq!(instant, manual);

参数接受 &str、String 和 Enum。

extern crate annis;
use annis::{OAuth, Client, Works::*};

	let use_enum = annis::works().params(vec![(filter_title, "lain")]);
	let use_string = annis::works().params(vec![("filter_title", "lain")]);

	assert_eq!(use_enum.params, use_string.params);

许可证

MIT 许可证
http://opensource.org/licenses/mit-license.php

依赖项

~4–19MB
~250K SLoC