trakt-macros

Crates.iotrakt-macros
lib.rstrakt-macros
version0.1.4
sourcesrc
created_at2024-02-12 06:04:19.485096
updated_at2024-03-14 02:57:05.775816
descriptionProcedural macros for the trakt-rs crate
homepage
repositoryhttps://github.com/ansg191/trakt
max_upload_size
id1136493
size20,892
Anshul Gupta (ansg191)

documentation

https://docs.rs/trakt-macros

README

trakt-rs

A Pure Rust Library for the Trakt.tv API

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

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

Commit count: 0

cargo fmt