5 releases
0.1.4 | Mar 14, 2024 |
---|---|
0.1.3 | Feb 19, 2024 |
0.1.2 | Feb 14, 2024 |
0.1.1 | Feb 12, 2024 |
0.1.0 | Feb 12, 2024 |
#1882 in Procedural macros
44 downloads per month
Used in trakt-rs
21KB
470 lines
trakt-rs
A Pure Rust Library for the Trakt.tv API
Trakt.tv API Documentation: https://trakt.docs.apiary.io
Usage
This library does not provide a client for making HTTP(s) requests.
That is left to the user. This enables the user to use any HTTP client they prefer
(e.g. reqwest
, hyper
, isahc
, etc.) with any TLS backend (e.g. native-tls
, rustls
, etc.)
in a synchronous or asynchronous manner.
Instead, the library provides a set of request and response types that can be converted into the
general purpose http::Request
and http::Response
types.
The types fill out the entirety of the HTTP request, including the URL, headers, and body.
However, the user may still modify the request before sending it.
The advantage of this approach is that the user has infinite flexibility in how they make requests. They can use any HTTP client, any TLS backend, and any request/response handling mechanism. Additionally, the user is free to make modifications to the request before sending it or the response after receiving it.
This also means this library has a smaller dependency tree, as it does not depend on runtime or HTTP client libraries.
Example
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);
License: MIT
Dependencies
~255–700KB
~17K SLoC