3 个版本
0.0.6 | 2022年3月20日 |
---|---|
0.0.5 | 2019年1月22日 |
0.0.4 | 2018年11月29日 |
0.0.3 |
|
0.0.1 |
|
#1075 in 网页编程
每月 25 下载
57KB
1.5K SLoC
annict-rs
日语: 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);
许可证
依赖项
~4–19MB
~250K SLoC