5 个版本
0.2.1 | 2024年3月14日 |
---|---|
0.2.0 | 2024年2月19日 |
0.1.2 | 2024年2月14日 |
0.1.1 | 2024年2月12日 |
0.1.0 | 2024年2月12日 |
#1015 in 网页开发
195KB
5K SLoC
trakt-rs
Trakt.tv API 的纯 Rust 库
Trakt.tv API 文档: https://trakt.docs.apiary.io
使用方法
此库不提供用于发起 HTTP(s) 请求的客户端。这留给了用户。这使用户可以使用任何他们偏好的 HTTP 客户端(例如 reqwest
,hyper
,isahc
等)和任何 TLS 后端(例如 native-tls
,rustls
等)以同步或异步方式进行操作。
相反,此库提供了一组请求和响应类型,可以转换为通用的 http::Request
和 http::Response
类型。这些类型填写了整个 HTTP 请求,包括 URL、头和正文。然而,用户仍然可以在发送之前修改请求。
这种方法的优势在于用户在请求方式上有无限的选择。他们可以使用任何 HTTP 客户端、任何 TLS 后端以及任何请求/响应处理机制。此外,用户可以在发送之前或接收之后自由修改请求或响应。
这也意味着此库的依赖关系树更小,因为它不依赖于运行时或 HTTP 客户端库。
示例
use trakt_rs::{Request, Response};
// Context required for all requests
let ctx = trakt_rs::Context {
base_url: "https://api.trakt.tv",
client_id: "client_id",
oauth_token: None,
};
// Create a request and convert it into an HTTP request
let req = trakt_rs::api::movies::summary::Request {
id: trakt_rs::smo::Id::Imdb("tt123456".into()),
};
let http_req: http::Request<Vec<u8>> = req.try_into_http_request(ctx).unwrap();
// Send the HTTP request using your preferred HTTP client
let response = http::Response::new(vec![]);
// Convert the HTTP response into a Trakt response
let trakt_response = trakt_rs::api::movies::summary::Response::try_from_http_response(response).unwrap();
println!("Movie: {:?}", trakt_response.0);
许可证:MIT
依赖项
~5MB
~90K SLoC