Riven

Riven Github Crates.io Docs.rs Travis CI unsafe forbidden

Rust Library for the [Riot Games API](https://developer.riotgames.com/). Rivens's goals are _speed_, _reliability_, and _maintainability_. Riven handles rate limits and large requests with ease. Data structs and endpoints are automatically generated from the [Riot API Reference](https://developer.riotgames.com/api-methods/) ([Swagger](http://www.mingweisamuel.com/riotapi-schema/tool/)). ## Design * Fast, asynchronous, thread-safe. * Automatically retries failed requests. * TFT API Support. ## Usage ```rust use riven::RiotApi; use riven::consts::Region; // Enter tokio async runtime. let mut rt = tokio::runtime::Runtime::new().unwrap(); rt.block_on(async { // Create RiotApi instance from key string. let api_key = "RGAPI-01234567-89ab-cdef-0123-456789abcdef"; # /* (doc testing) */ let api_key = std::env!("RGAPI_KEY"); let riot_api = RiotApi::with_key(api_key); // Get summoner data. let summoner = riot_api.summoner_v4() .get_by_summoner_name(Region::NA, "잘못").await .expect("Get summoner failed.") .expect("There is no summoner with that name."); // Print summoner name. println!("{} Champion Masteries:", summoner.name); // Get champion mastery data. let masteries = riot_api.champion_mastery_v4() .get_all_champion_masteries(Region::NA, &summoner.id).await .expect("Get champion masteries failed."); // Print champioon masteries. for (i, mastery) in masteries[..10].iter().enumerate() { println!("{: >2}) {: <9} {: >7} ({})", i + 1, mastery.champion_id.to_string(), mastery.champion_points, mastery.champion_level); } }); ``` Output: ```text 잘 못 Champion Masteries: 1) Riven 1219895 (7) 2) Fiora 229714 (5) 3) Katarina 175985 (5) 4) Lee Sin 150546 (7) 5) Jax 100509 (5) 6) Gnar 76373 (6) 7) Kai'Sa 64271 (5) 8) Caitlyn 46479 (5) 9) Irelia 46465 (5) 10) Vladimir 37176 (5) ``` ### Nightly vs Stable Enable the `nightly` feature to use nightly-only functionality. Mainly enables [nightly optimizations in the `parking_lot` crate](https://github.com/Amanieu/parking_lot#nightly-vs-stable). Also required for running async integration tests. ### Docs [On docs.rs](https://docs.rs/riven/). ### Error Handling Riven returns `Result>` within futures. If the `Result` is errored, this indicates that the API request failed to complete successfully, which may be due to bad user input, Riot server errors, incorrect API key, etc. If the `Option` is `None`, this indicates that the request completed successfully but no data was returned. This happens if a summoner (by name) or match (by id) doesn't exist. ### Semantic Versioning This package follows semantic versioning to an extent. However, the Riot API itself changes often and does not follow semantic versioning, which makes things difficult. Out-of-date versions will slowly partially cease to work due to this. When the API changes, this may result in breaking changes in the `models` module, `endpoints` module, and some of the `consts` module. "Handle accessors" may be removed from `RiotApi` if the corresponding endpoint is removed from the Riot API. These changes will increment the **MINOR** version. Parts of Riven that do not depend on Riot API changes do follow semantic versioning. ### Additional Info Feel free to [make an issue](https://github.com/MingweiSamuel/Riven/issues/new) if you are have any questions or trouble using Riven.