4个版本

0.2.1 2024年3月14日
0.2.0 2024年2月19日
0.1.1 2024年2月14日
0.1.0 2024年2月14日

#23 in #api-request


被用于 trakt-rs

MIT 许可证

59KB
1.5K SLoC

trakt-rs

一个用于 Trakt.tv API 的纯 Rust 库

Crates.io Version docs.rs Crates.io License Rust codecov

Trakt.tv API 文档: https://trakt.docs.apiary.io

使用方法

此库不提供制作 HTTP(s) 请求的客户端。这留给用户处理。这使得用户可以使用任何他们喜欢的 HTTP 客户端(例如 reqwesthyperisahc 等)以及任何 TLS 后端(例如 native-tlsrustls 等)以同步或异步的方式。

相反,该库提供了一套请求和响应类型,这些类型可以转换为通用目的的 http::Requesthttp::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

依赖项

~2.5–3.5MB
~61K SLoC