ddragon

Crates.ioddragon
lib.rsddragon
version0.8.2
sourcesrc
created_at2023-01-19 23:52:36.960811
updated_at2024-04-05 20:47:30.076984
descriptionLibrary for pulling data from ddragon, with caching support.
homepagehttps://github.com/kade-robertson/ddragon
repositoryhttps://github.com/kade-robertson/ddragon
max_upload_size
id763022
size103,977
Kade (kade-robertson)

documentation

README

ddragon

latest version health check status downloads of latest version latest docs

Rust library for accessing the latest League of Legends patch's ddragon data.

  • Fully (de)serializable, well-typed structs
  • Supports TFT data
  • Provides a synchronous API by default
    • Local caching via cacache
    • Accepts custom ureq agents (which can use the exposed cache middleware)
  • Optionally, an asynchronous API can be used that maintains the same featureset
    • Local caching is handled by http-cache-reqwest rather than a custom middleware
    • Also accepts custom reqwest or reqwest-middleware clients
  • Optionally, some useful functions to fetch and decode images, via image

Usage

use ddragon::{cache_middleware::CacheMiddleware, Client, ClientBuilder, ClientError};

fn main() -> Result<(), ClientError> {
    let client = Client::new("/path/to/your/cache/dir")?;

    // If you want to use an existing agent
    let my_agent = ureq::AgentBuilder::new()
        .middleware(CacheMiddleware::new("/path/to/your/cache/dir"))
        .build();
    let client = ClientBuilder::new().agent(my_agent).build()?;

    // See available options on the client and in the models folder.
    let champions = client.champions()?;
    let runes = client.runes()?;
    let tft_items = client.tft_items()?;

    Ok(())
}

Features

The following crate features are available:

  • sync (on by default) enables the synchronous client.

    • Provides the ddragon::client and ddragon::cache_middleware module.
    • Provides the re-exported ddragon::Client and ddragon::ClientBuilder impls.
    • Adds cacache, url, thiserror, and ureq with the json feature enabled as dependencies.
  • async enables the asynchronous client.

    • Provides the ddragon::async_client module.
    • Provides the re-exported ddragon::AsyncClient and ddragon::AsyncClientBuilder impls.
    • Adds reqwest with the json feature, reqwest-middleware and http-cache-reqwest as dependencies.
    • If you would like the client to use rustls, use the async-rustls feature instead.
  • image enables image fetching and caching.

    • Both clients will receive image_of and sprite_of for any model which implements HasImage.
    • Adds the image dependency.
  • To use the library with just the synchronous version, it should be as simple as adding any other dependency:

[dependencies]
ddragon = "<version>"
  • If you would also like to have the image fetching support, use:
[dependencies]
ddragon = { version = "<version>", features = ["image"] }
  • If you want the asynchronous client only, you probably don't want to pull in the dependencies related to the synchronous code, so you can do this:
[dependencies]
ddragon = { version = "<version>", default-features = false, features = ["async"] }
  • If you want the async client and you want to use rustls (and you want ddragon to generate the client), you can use:
[dependencies]
ddragon = { version = "<version>", default-features = false, features = ["async-rustls"] }

Note that if you are providing your own client (via AsyncClientBuilder::new().agent()) you can use either async feature set.

  • If you only want the DDragon models (none of the client code), you can use
[dependencies]
ddragon = { version = "<version>", default-features = false }

MSRV

Currently, this crate support Rust >= 1.67.1.

Commit count: 82

cargo fmt