3 个版本 (破坏性更新)

0.3.0 2022 年 9 月 11 日
0.2.0 2022 年 9 月 6 日
0.1.0 2022 年 8 月 29 日

#363 in HTTP 客户端

MIT 许可证

25KB
471

电子馆

CI crates.io docs.rs license

电子馆 是一个工作中的 TMDB API 客户端。

电子馆 可用,但尚未覆盖 TMDB API 的很多功能。

用法

电子馆 添加到您的 Cargo.toml 依赖中

[dependencies]
eiga = "0.3.0"

示例

此示例展示了如何获取电影详情。您可以在 examples 文件夹中找到其他示例。

use std::env;
use std::error::Error;

use serde::Deserialize;

use eiga::{movie, Client, Tmdb};

// eiga doesn't provide types for endpoint responses. Instead, users provide
// their own structs to deserialize into.
#[derive(Deserialize)]
struct MovieDetails {
    release_date: String,
    title: String,
}

fn main() -> Result<(), Box<dyn Error>> {
    // Create a TMDB client by providing an API access token. Here, the token
    // is stored in the TMDB_TOKEN environment variable.
    let token = env::var("TMDB_TOKEN")?;
    let tmdb = Tmdb::new(token);

    // Build an endpoint to get details about "Tokyo Drifter" (1966). Each
    // endpoint has setter methods for optional query string parameters.
    let tokyo_drifter_id = 45706;
    let movie_details_endpoint =
        movie::Details::new(tokyo_drifter_id).language("en-US");

    // Send the request! Type annotations are required because `send` can
    // deserialize the response to any type that implements `Deserialize`.
    let movie_details: MovieDetails = tmdb.send(&movie_details_endpoint)?;

    assert_eq!(movie_details.title, "Tokyo Drifter");
    assert_eq!(movie_details.release_date, "1966-04-10");

    Ok(())
}

致谢

  • 电子馆 的设计主要基于 gitlab crate 的设计。关于其设计的良好文档可以在这里找到 这里

依赖

~2.8–4MB
~104K SLoC