mirror of
https://github.com/MingweiSamuel/Riven.git
synced 2025-01-27 03:07:27 -08:00
update error handling
This commit is contained in:
parent
e62a41983a
commit
c3c3e639ee
7 changed files with 70 additions and 72 deletions
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
// This file is automatically generated.
|
// This file is automatically generated.
|
||||||
// Do not directly edit.
|
// Do not directly edit.
|
||||||
// Generated on 2019-10-22T21:42:10.101Z
|
// Generated on 2019-10-23T01:41:03.103Z
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use num_derive;
|
use num_derive;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
// This file is automatically generated.
|
// This file is automatically generated.
|
||||||
// Do not directly edit.
|
// Do not directly edit.
|
||||||
// Generated on 2019-10-22T21:42:10.216Z
|
// Generated on 2019-10-23T01:41:03.165Z
|
||||||
|
|
||||||
// http://www.mingweisamuel.com/riotapi-schema/tool/
|
// http://www.mingweisamuel.com/riotapi-schema/tool/
|
||||||
// Version 0c74167e0eaaeb6de1c7e8219fecaabcf8386d1f
|
// Version 0c74167e0eaaeb6de1c7e8219fecaabcf8386d1f
|
||||||
|
@ -12,9 +12,9 @@ pub use dto::*;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|
||||||
use reqwest;
|
|
||||||
use url::form_urlencoded::Serializer;
|
use url::form_urlencoded::Serializer;
|
||||||
|
|
||||||
|
use crate::Result;
|
||||||
use crate::consts::Region;
|
use crate::consts::Region;
|
||||||
use crate::riot_api::RiotApi;
|
use crate::riot_api::RiotApi;
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ impl<'a> ChampionMasteryV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
||||||
pub fn get_all_champion_masteries(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_all_champion_masteries(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<Vec<champion_mastery_v4::ChampionMastery>>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<Vec<champion_mastery_v4::ChampionMastery>>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/champion-mastery/v4/champion-masteries/by-summoner/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/champion-mastery/v4/champion-masteries/by-summoner/{}", encrypted_summoner_id);
|
||||||
self.base.get::<Vec<champion_mastery_v4::ChampionMastery>>("champion-mastery-v4.getAllChampionMasteries", region, path_string, None)
|
self.base.get::<Vec<champion_mastery_v4::ChampionMastery>>("champion-mastery-v4.getAllChampionMasteries", region, path_string, None)
|
||||||
|
@ -126,7 +126,7 @@ impl<'a> ChampionMasteryV4<'a> {
|
||||||
/// * `championId` - Champion ID to retrieve Champion Mastery for
|
/// * `championId` - Champion ID to retrieve Champion Mastery for
|
||||||
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
||||||
pub fn get_champion_mastery(&self, region: Region, encrypted_summoner_id: &str, champion_id: i64)
|
pub fn get_champion_mastery(&self, region: Region, encrypted_summoner_id: &str, champion_id: i64)
|
||||||
-> impl Future<Output = Result<Option<champion_mastery_v4::ChampionMastery>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<champion_mastery_v4::ChampionMastery>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/champion-mastery/v4/champion-masteries/by-summoner/{}/by-champion/{}", encrypted_summoner_id, champion_id);
|
let path_string = format!("/lol/champion-mastery/v4/champion-masteries/by-summoner/{}/by-champion/{}", encrypted_summoner_id, champion_id);
|
||||||
self.base.get::<champion_mastery_v4::ChampionMastery>("champion-mastery-v4.getChampionMastery", region, path_string, None)
|
self.base.get::<champion_mastery_v4::ChampionMastery>("champion-mastery-v4.getChampionMastery", region, path_string, None)
|
||||||
|
@ -139,7 +139,7 @@ impl<'a> ChampionMasteryV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
/// * `encryptedSummonerId` - Summoner ID associated with the player
|
||||||
pub fn get_champion_mastery_score(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_champion_mastery_score(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<i32>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<i32>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/champion-mastery/v4/scores/by-summoner/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/champion-mastery/v4/scores/by-summoner/{}", encrypted_summoner_id);
|
||||||
self.base.get::<i32>("champion-mastery-v4.getChampionMasteryScore", region, path_string, None)
|
self.base.get::<i32>("champion-mastery-v4.getChampionMasteryScore", region, path_string, None)
|
||||||
|
@ -160,7 +160,7 @@ impl<'a> ChampionV3<'a> {
|
||||||
/// # Parameters
|
/// # Parameters
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
pub fn get_champion_info(&self, region: Region)
|
pub fn get_champion_info(&self, region: Region)
|
||||||
-> impl Future<Output = Result<Option<champion_v3::ChampionInfo>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<champion_v3::ChampionInfo>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = "/lol/platform/v3/champion-rotations".to_owned();
|
let path_string = "/lol/platform/v3/champion-rotations".to_owned();
|
||||||
self.base.get::<champion_v3::ChampionInfo>("champion-v3.getChampionInfo", region, path_string, None)
|
self.base.get::<champion_v3::ChampionInfo>("champion-v3.getChampionInfo", region, path_string, None)
|
||||||
|
@ -185,7 +185,7 @@ impl<'a> LeagueExpV4<'a> {
|
||||||
/// * `division`
|
/// * `division`
|
||||||
/// * `page` (optional) - Starts with page 1.
|
/// * `page` (optional) - Starts with page 1.
|
||||||
pub fn get_league_entries(&self, region: Region, division: &str, tier: &str, queue: &str, page: Option<i32>)
|
pub fn get_league_entries(&self, region: Region, division: &str, tier: &str, queue: &str, page: Option<i32>)
|
||||||
-> impl Future<Output = Result<Option<Vec<league_exp_v4::LeagueEntry>>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<Vec<league_exp_v4::LeagueEntry>>>> + 'a
|
||||||
{
|
{
|
||||||
let mut query_params = Serializer::new(String::new());
|
let mut query_params = Serializer::new(String::new());
|
||||||
if let Some(page) = page { query_params.append_pair("page", &*page.to_string()); };
|
if let Some(page) = page { query_params.append_pair("page", &*page.to_string()); };
|
||||||
|
@ -210,7 +210,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `queue`
|
/// * `queue`
|
||||||
pub fn get_challenger_league(&self, region: Region, queue: &str)
|
pub fn get_challenger_league(&self, region: Region, queue: &str)
|
||||||
-> impl Future<Output = Result<Option<league_v4::LeagueList>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<league_v4::LeagueList>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/league/v4/challengerleagues/by-queue/{}", queue);
|
let path_string = format!("/lol/league/v4/challengerleagues/by-queue/{}", queue);
|
||||||
self.base.get::<league_v4::LeagueList>("league-v4.getChallengerLeague", region, path_string, None)
|
self.base.get::<league_v4::LeagueList>("league-v4.getChallengerLeague", region, path_string, None)
|
||||||
|
@ -223,7 +223,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId`
|
/// * `encryptedSummonerId`
|
||||||
pub fn get_league_entries_for_summoner(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_league_entries_for_summoner(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<Vec<league_v4::LeagueEntry>>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<Vec<league_v4::LeagueEntry>>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/league/v4/entries/by-summoner/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/league/v4/entries/by-summoner/{}", encrypted_summoner_id);
|
||||||
self.base.get::<Vec<league_v4::LeagueEntry>>("league-v4.getLeagueEntriesForSummoner", region, path_string, None)
|
self.base.get::<Vec<league_v4::LeagueEntry>>("league-v4.getLeagueEntriesForSummoner", region, path_string, None)
|
||||||
|
@ -239,7 +239,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `queue` - Note that the queue value must be a valid ranked queue.
|
/// * `queue` - Note that the queue value must be a valid ranked queue.
|
||||||
/// * `page` (optional) - Starts with page 1.
|
/// * `page` (optional) - Starts with page 1.
|
||||||
pub fn get_league_entries(&self, region: Region, queue: &str, tier: &str, division: &str, page: Option<i32>)
|
pub fn get_league_entries(&self, region: Region, queue: &str, tier: &str, division: &str, page: Option<i32>)
|
||||||
-> impl Future<Output = Result<Option<Vec<league_v4::LeagueEntry>>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<Vec<league_v4::LeagueEntry>>>> + 'a
|
||||||
{
|
{
|
||||||
let mut query_params = Serializer::new(String::new());
|
let mut query_params = Serializer::new(String::new());
|
||||||
if let Some(page) = page { query_params.append_pair("page", &*page.to_string()); };
|
if let Some(page) = page { query_params.append_pair("page", &*page.to_string()); };
|
||||||
|
@ -255,7 +255,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `queue`
|
/// * `queue`
|
||||||
pub fn get_grandmaster_league(&self, region: Region, queue: &str)
|
pub fn get_grandmaster_league(&self, region: Region, queue: &str)
|
||||||
-> impl Future<Output = Result<Option<league_v4::LeagueList>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<league_v4::LeagueList>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/league/v4/grandmasterleagues/by-queue/{}", queue);
|
let path_string = format!("/lol/league/v4/grandmasterleagues/by-queue/{}", queue);
|
||||||
self.base.get::<league_v4::LeagueList>("league-v4.getGrandmasterLeague", region, path_string, None)
|
self.base.get::<league_v4::LeagueList>("league-v4.getGrandmasterLeague", region, path_string, None)
|
||||||
|
@ -268,7 +268,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `leagueId` - The UUID of the league.
|
/// * `leagueId` - The UUID of the league.
|
||||||
pub fn get_league_by_id(&self, region: Region, league_id: &str)
|
pub fn get_league_by_id(&self, region: Region, league_id: &str)
|
||||||
-> impl Future<Output = Result<Option<league_v4::LeagueList>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<league_v4::LeagueList>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/league/v4/leagues/{}", league_id);
|
let path_string = format!("/lol/league/v4/leagues/{}", league_id);
|
||||||
self.base.get::<league_v4::LeagueList>("league-v4.getLeagueById", region, path_string, None)
|
self.base.get::<league_v4::LeagueList>("league-v4.getLeagueById", region, path_string, None)
|
||||||
|
@ -281,7 +281,7 @@ impl<'a> LeagueV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `queue`
|
/// * `queue`
|
||||||
pub fn get_master_league(&self, region: Region, queue: &str)
|
pub fn get_master_league(&self, region: Region, queue: &str)
|
||||||
-> impl Future<Output = Result<Option<league_v4::LeagueList>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<league_v4::LeagueList>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/league/v4/masterleagues/by-queue/{}", queue);
|
let path_string = format!("/lol/league/v4/masterleagues/by-queue/{}", queue);
|
||||||
self.base.get::<league_v4::LeagueList>("league-v4.getMasterLeague", region, path_string, None)
|
self.base.get::<league_v4::LeagueList>("league-v4.getMasterLeague", region, path_string, None)
|
||||||
|
@ -304,7 +304,7 @@ impl<'a> LolStatusV3<'a> {
|
||||||
/// # Parameters
|
/// # Parameters
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
pub fn get_shard_data(&self, region: Region)
|
pub fn get_shard_data(&self, region: Region)
|
||||||
-> impl Future<Output = Result<Option<lol_status_v3::ShardStatus>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<lol_status_v3::ShardStatus>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = "/lol/status/v3/shard-data".to_owned();
|
let path_string = "/lol/status/v3/shard-data".to_owned();
|
||||||
self.base.get::<lol_status_v3::ShardStatus>("lol-status-v3.getShardData", region, path_string, None)
|
self.base.get::<lol_status_v3::ShardStatus>("lol-status-v3.getShardData", region, path_string, None)
|
||||||
|
@ -326,7 +326,7 @@ impl<'a> MatchV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `tournamentCode` - The tournament code.
|
/// * `tournamentCode` - The tournament code.
|
||||||
pub fn get_match_ids_by_tournament_code(&self, region: Region, tournament_code: &str)
|
pub fn get_match_ids_by_tournament_code(&self, region: Region, tournament_code: &str)
|
||||||
-> impl Future<Output = Result<Option<Vec<i64>>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<Vec<i64>>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/match/v4/matches/by-tournament-code/{}/ids", tournament_code);
|
let path_string = format!("/lol/match/v4/matches/by-tournament-code/{}/ids", tournament_code);
|
||||||
self.base.get::<Vec<i64>>("match-v4.getMatchIdsByTournamentCode", region, path_string, None)
|
self.base.get::<Vec<i64>>("match-v4.getMatchIdsByTournamentCode", region, path_string, None)
|
||||||
|
@ -339,7 +339,7 @@ impl<'a> MatchV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `matchId` - The match ID.
|
/// * `matchId` - The match ID.
|
||||||
pub fn get_match(&self, region: Region, match_id: i64)
|
pub fn get_match(&self, region: Region, match_id: i64)
|
||||||
-> impl Future<Output = Result<Option<match_v4::Match>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<match_v4::Match>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/match/v4/matches/{}", match_id);
|
let path_string = format!("/lol/match/v4/matches/{}", match_id);
|
||||||
self.base.get::<match_v4::Match>("match-v4.getMatch", region, path_string, None)
|
self.base.get::<match_v4::Match>("match-v4.getMatch", region, path_string, None)
|
||||||
|
@ -353,7 +353,7 @@ impl<'a> MatchV4<'a> {
|
||||||
/// * `tournamentCode` - The tournament code.
|
/// * `tournamentCode` - The tournament code.
|
||||||
/// * `matchId` - The match ID.
|
/// * `matchId` - The match ID.
|
||||||
pub fn get_match_by_tournament_code(&self, region: Region, match_id: i64, tournament_code: &str)
|
pub fn get_match_by_tournament_code(&self, region: Region, match_id: i64, tournament_code: &str)
|
||||||
-> impl Future<Output = Result<Option<match_v4::Match>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<match_v4::Match>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/match/v4/matches/{}/by-tournament-code/{}", match_id, tournament_code);
|
let path_string = format!("/lol/match/v4/matches/{}/by-tournament-code/{}", match_id, tournament_code);
|
||||||
self.base.get::<match_v4::Match>("match-v4.getMatchByTournamentCode", region, path_string, None)
|
self.base.get::<match_v4::Match>("match-v4.getMatchByTournamentCode", region, path_string, None)
|
||||||
|
@ -379,7 +379,7 @@ impl<'a> MatchV4<'a> {
|
||||||
/// * `endIndex` (optional) - The end index to use for filtering matchlist. If beginIndex is specified, but not endIndex, then endIndex defaults to beginIndex+100. If endIndex is specified, but not beginIndex, then beginIndex defaults to 0. If both are specified, then endIndex must be greater than beginIndex. The maximum range allowed is 100, otherwise a 400 error code is returned.
|
/// * `endIndex` (optional) - The end index to use for filtering matchlist. If beginIndex is specified, but not endIndex, then endIndex defaults to beginIndex+100. If endIndex is specified, but not beginIndex, then beginIndex defaults to 0. If both are specified, then endIndex must be greater than beginIndex. The maximum range allowed is 100, otherwise a 400 error code is returned.
|
||||||
/// * `beginIndex` (optional) - The begin index to use for filtering matchlist. If beginIndex is specified, but not endIndex, then endIndex defaults to beginIndex+100. If endIndex is specified, but not beginIndex, then beginIndex defaults to 0. If both are specified, then endIndex must be greater than beginIndex. The maximum range allowed is 100, otherwise a 400 error code is returned.
|
/// * `beginIndex` (optional) - The begin index to use for filtering matchlist. If beginIndex is specified, but not endIndex, then endIndex defaults to beginIndex+100. If endIndex is specified, but not beginIndex, then beginIndex defaults to 0. If both are specified, then endIndex must be greater than beginIndex. The maximum range allowed is 100, otherwise a 400 error code is returned.
|
||||||
pub fn get_matchlist(&self, region: Region, encrypted_account_id: &str, champion: Option<std::vec::Vec<i32>>, queue: Option<std::vec::Vec<i32>>, season: Option<std::vec::Vec<i32>>, end_time: Option<i64>, begin_time: Option<i64>, end_index: Option<i32>, begin_index: Option<i32>)
|
pub fn get_matchlist(&self, region: Region, encrypted_account_id: &str, champion: Option<std::vec::Vec<i32>>, queue: Option<std::vec::Vec<i32>>, season: Option<std::vec::Vec<i32>>, end_time: Option<i64>, begin_time: Option<i64>, end_index: Option<i32>, begin_index: Option<i32>)
|
||||||
-> impl Future<Output = Result<Option<match_v4::Matchlist>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<match_v4::Matchlist>>> + 'a
|
||||||
{
|
{
|
||||||
let mut query_params = Serializer::new(String::new());
|
let mut query_params = Serializer::new(String::new());
|
||||||
if let Some(champion) = champion { query_params.extend_pairs(champion.iter().map(|w| ("champion", w.to_string()))); };
|
if let Some(champion) = champion { query_params.extend_pairs(champion.iter().map(|w| ("champion", w.to_string()))); };
|
||||||
|
@ -403,7 +403,7 @@ impl<'a> MatchV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `matchId` - The match ID.
|
/// * `matchId` - The match ID.
|
||||||
pub fn get_match_timeline(&self, region: Region, match_id: i64)
|
pub fn get_match_timeline(&self, region: Region, match_id: i64)
|
||||||
-> impl Future<Output = Result<Option<match_v4::MatchTimeline>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<match_v4::MatchTimeline>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/match/v4/timelines/by-match/{}", match_id);
|
let path_string = format!("/lol/match/v4/timelines/by-match/{}", match_id);
|
||||||
self.base.get::<match_v4::MatchTimeline>("match-v4.getMatchTimeline", region, path_string, None)
|
self.base.get::<match_v4::MatchTimeline>("match-v4.getMatchTimeline", region, path_string, None)
|
||||||
|
@ -425,7 +425,7 @@ impl<'a> SpectatorV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId` - The ID of the summoner.
|
/// * `encryptedSummonerId` - The ID of the summoner.
|
||||||
pub fn get_current_game_info_by_summoner(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_current_game_info_by_summoner(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<spectator_v4::CurrentGameInfo>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<spectator_v4::CurrentGameInfo>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/spectator/v4/active-games/by-summoner/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/spectator/v4/active-games/by-summoner/{}", encrypted_summoner_id);
|
||||||
self.base.get::<spectator_v4::CurrentGameInfo>("spectator-v4.getCurrentGameInfoBySummoner", region, path_string, None)
|
self.base.get::<spectator_v4::CurrentGameInfo>("spectator-v4.getCurrentGameInfoBySummoner", region, path_string, None)
|
||||||
|
@ -437,7 +437,7 @@ impl<'a> SpectatorV4<'a> {
|
||||||
/// # Parameters
|
/// # Parameters
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
pub fn get_featured_games(&self, region: Region)
|
pub fn get_featured_games(&self, region: Region)
|
||||||
-> impl Future<Output = Result<Option<spectator_v4::FeaturedGames>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<spectator_v4::FeaturedGames>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = "/lol/spectator/v4/featured-games".to_owned();
|
let path_string = "/lol/spectator/v4/featured-games".to_owned();
|
||||||
self.base.get::<spectator_v4::FeaturedGames>("spectator-v4.getFeaturedGames", region, path_string, None)
|
self.base.get::<spectator_v4::FeaturedGames>("spectator-v4.getFeaturedGames", region, path_string, None)
|
||||||
|
@ -459,7 +459,7 @@ impl<'a> SummonerV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedAccountId`
|
/// * `encryptedAccountId`
|
||||||
pub fn get_by_account_id(&self, region: Region, encrypted_account_id: &str)
|
pub fn get_by_account_id(&self, region: Region, encrypted_account_id: &str)
|
||||||
-> impl Future<Output = Result<Option<summoner_v4::Summoner>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<summoner_v4::Summoner>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/summoner/v4/summoners/by-account/{}", encrypted_account_id);
|
let path_string = format!("/lol/summoner/v4/summoners/by-account/{}", encrypted_account_id);
|
||||||
self.base.get::<summoner_v4::Summoner>("summoner-v4.getByAccountId", region, path_string, None)
|
self.base.get::<summoner_v4::Summoner>("summoner-v4.getByAccountId", region, path_string, None)
|
||||||
|
@ -472,7 +472,7 @@ impl<'a> SummonerV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `summonerName` - Summoner Name
|
/// * `summonerName` - Summoner Name
|
||||||
pub fn get_by_summoner_name(&self, region: Region, summoner_name: &str)
|
pub fn get_by_summoner_name(&self, region: Region, summoner_name: &str)
|
||||||
-> impl Future<Output = Result<Option<summoner_v4::Summoner>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<summoner_v4::Summoner>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/summoner/v4/summoners/by-name/{}", summoner_name);
|
let path_string = format!("/lol/summoner/v4/summoners/by-name/{}", summoner_name);
|
||||||
self.base.get::<summoner_v4::Summoner>("summoner-v4.getBySummonerName", region, path_string, None)
|
self.base.get::<summoner_v4::Summoner>("summoner-v4.getBySummonerName", region, path_string, None)
|
||||||
|
@ -485,7 +485,7 @@ impl<'a> SummonerV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedPUUID` - Summoner ID
|
/// * `encryptedPUUID` - Summoner ID
|
||||||
pub fn get_by_puuid(&self, region: Region, encrypted_puuid: &str)
|
pub fn get_by_puuid(&self, region: Region, encrypted_puuid: &str)
|
||||||
-> impl Future<Output = Result<Option<summoner_v4::Summoner>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<summoner_v4::Summoner>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/summoner/v4/summoners/by-puuid/{}", encrypted_puuid);
|
let path_string = format!("/lol/summoner/v4/summoners/by-puuid/{}", encrypted_puuid);
|
||||||
self.base.get::<summoner_v4::Summoner>("summoner-v4.getByPUUID", region, path_string, None)
|
self.base.get::<summoner_v4::Summoner>("summoner-v4.getByPUUID", region, path_string, None)
|
||||||
|
@ -498,7 +498,7 @@ impl<'a> SummonerV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId` - Summoner ID
|
/// * `encryptedSummonerId` - Summoner ID
|
||||||
pub fn get_by_summoner_id(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_by_summoner_id(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<summoner_v4::Summoner>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<summoner_v4::Summoner>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/summoner/v4/summoners/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/summoner/v4/summoners/{}", encrypted_summoner_id);
|
||||||
self.base.get::<summoner_v4::Summoner>("summoner-v4.getBySummonerId", region, path_string, None)
|
self.base.get::<summoner_v4::Summoner>("summoner-v4.getBySummonerId", region, path_string, None)
|
||||||
|
@ -520,7 +520,7 @@ impl<'a> ThirdPartyCodeV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `encryptedSummonerId`
|
/// * `encryptedSummonerId`
|
||||||
pub fn get_third_party_code_by_summoner_id(&self, region: Region, encrypted_summoner_id: &str)
|
pub fn get_third_party_code_by_summoner_id(&self, region: Region, encrypted_summoner_id: &str)
|
||||||
-> impl Future<Output = Result<Option<String>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<String>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/platform/v4/third-party-code/by-summoner/{}", encrypted_summoner_id);
|
let path_string = format!("/lol/platform/v4/third-party-code/by-summoner/{}", encrypted_summoner_id);
|
||||||
self.base.get::<String>("third-party-code-v4.getThirdPartyCodeBySummonerId", region, path_string, None)
|
self.base.get::<String>("third-party-code-v4.getThirdPartyCodeBySummonerId", region, path_string, None)
|
||||||
|
@ -542,7 +542,7 @@ impl<'a> TournamentStubV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `tournamentCode` - The short code to look up lobby events for
|
/// * `tournamentCode` - The short code to look up lobby events for
|
||||||
pub fn get_lobby_events_by_code(&self, region: Region, tournament_code: &str)
|
pub fn get_lobby_events_by_code(&self, region: Region, tournament_code: &str)
|
||||||
-> impl Future<Output = Result<Option<tournament_stub_v4::LobbyEventWrapper>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<tournament_stub_v4::LobbyEventWrapper>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/tournament-stub/v4/lobby-events/by-code/{}", tournament_code);
|
let path_string = format!("/lol/tournament-stub/v4/lobby-events/by-code/{}", tournament_code);
|
||||||
self.base.get::<tournament_stub_v4::LobbyEventWrapper>("tournament-stub-v4.getLobbyEventsByCode", region, path_string, None)
|
self.base.get::<tournament_stub_v4::LobbyEventWrapper>("tournament-stub-v4.getLobbyEventsByCode", region, path_string, None)
|
||||||
|
@ -564,7 +564,7 @@ impl<'a> TournamentV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `tournamentCode` - The tournament code string.
|
/// * `tournamentCode` - The tournament code string.
|
||||||
pub fn get_tournament_code(&self, region: Region, tournament_code: &str)
|
pub fn get_tournament_code(&self, region: Region, tournament_code: &str)
|
||||||
-> impl Future<Output = Result<Option<tournament_v4::TournamentCode>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<tournament_v4::TournamentCode>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/tournament/v4/codes/{}", tournament_code);
|
let path_string = format!("/lol/tournament/v4/codes/{}", tournament_code);
|
||||||
self.base.get::<tournament_v4::TournamentCode>("tournament-v4.getTournamentCode", region, path_string, None)
|
self.base.get::<tournament_v4::TournamentCode>("tournament-v4.getTournamentCode", region, path_string, None)
|
||||||
|
@ -577,7 +577,7 @@ impl<'a> TournamentV4<'a> {
|
||||||
/// * `region` - Region to query.
|
/// * `region` - Region to query.
|
||||||
/// * `tournamentCode` - The short code to look up lobby events for
|
/// * `tournamentCode` - The short code to look up lobby events for
|
||||||
pub fn get_lobby_events_by_code(&self, region: Region, tournament_code: &str)
|
pub fn get_lobby_events_by_code(&self, region: Region, tournament_code: &str)
|
||||||
-> impl Future<Output = Result<Option<tournament_v4::LobbyEventWrapper>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<tournament_v4::LobbyEventWrapper>>> + 'a
|
||||||
{
|
{
|
||||||
let path_string = format!("/lol/tournament/v4/lobby-events/by-code/{}", tournament_code);
|
let path_string = format!("/lol/tournament/v4/lobby-events/by-code/{}", tournament_code);
|
||||||
self.base.get::<tournament_v4::LobbyEventWrapper>("tournament-v4.getLobbyEventsByCode", region, path_string, None)
|
self.base.get::<tournament_v4::LobbyEventWrapper>("tournament-v4.getLobbyEventsByCode", region, path_string, None)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
// This file is automatically generated.
|
// This file is automatically generated.
|
||||||
// Do not directly edit.
|
// Do not directly edit.
|
||||||
// Generated on 2019-10-22T21:42:10.207Z
|
// Generated on 2019-10-23T01:41:03.173Z
|
||||||
|
|
||||||
// http://www.mingweisamuel.com/riotapi-schema/tool/
|
// http://www.mingweisamuel.com/riotapi-schema/tool/
|
||||||
// Version 0c74167e0eaaeb6de1c7e8219fecaabcf8386d1f
|
// Version 0c74167e0eaaeb6de1c7e8219fecaabcf8386d1f
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
pub use reqwest::Error as Error;
|
||||||
|
pub use reqwest::Result as Result;
|
||||||
|
|
||||||
pub mod consts;
|
pub mod consts;
|
||||||
|
|
||||||
pub mod endpoints;
|
pub mod endpoints;
|
||||||
|
@ -44,7 +47,7 @@ mod tests {
|
||||||
let my_future = riot_api.champion_mastery_v4().get_all_champion_masteries(
|
let my_future = riot_api.champion_mastery_v4().get_all_champion_masteries(
|
||||||
consts::Region::NA, "SBM8Ubipo4ge2yj7bhEzL7yvV0C9Oc1XA2l6v5okGMA_nCw");
|
consts::Region::NA, "SBM8Ubipo4ge2yj7bhEzL7yvV0C9Oc1XA2l6v5okGMA_nCw");
|
||||||
let val = rt.block_on(my_future).unwrap();
|
let val = rt.block_on(my_future).unwrap();
|
||||||
println!("VAL {}: {:#?}", i, val.unwrap());
|
//println!("VAL {}: {:#?}", i, val.unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use log;
|
||||||
use reqwest::{ Client, StatusCode, Url };
|
use reqwest::{ Client, StatusCode, Url };
|
||||||
use tokio_timer::delay_for;
|
use tokio_timer::delay_for;
|
||||||
|
|
||||||
|
use crate::Result;
|
||||||
use crate::riot_api_config::RiotApiConfig;
|
use crate::riot_api_config::RiotApiConfig;
|
||||||
use crate::consts::Region;
|
use crate::consts::Region;
|
||||||
use crate::util::InsertOnlyCHashMap;
|
use crate::util::InsertOnlyCHashMap;
|
||||||
|
@ -12,9 +14,6 @@ use super::RateLimit;
|
||||||
use super::RateLimitType;
|
use super::RateLimitType;
|
||||||
|
|
||||||
pub struct RegionalRequester {
|
pub struct RegionalRequester {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Represents the app rate limit.
|
/// Represents the app rate limit.
|
||||||
app_rate_limit: RateLimit,
|
app_rate_limit: RateLimit,
|
||||||
/// Represents method rate limits.
|
/// Represents method rate limits.
|
||||||
|
@ -39,15 +38,13 @@ impl RegionalRequester {
|
||||||
pub fn get<'a, T: serde::de::DeserializeOwned>(self: Arc<Self>,
|
pub fn get<'a, T: serde::de::DeserializeOwned>(self: Arc<Self>,
|
||||||
config: &'a RiotApiConfig, client: &'a Client,
|
config: &'a RiotApiConfig, client: &'a Client,
|
||||||
method_id: &'static str, region: Region, path: String, query: Option<String>)
|
method_id: &'static str, region: Region, path: String, query: Option<String>)
|
||||||
-> impl Future<Output = Result<Option<T>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<T>>> + 'a
|
||||||
{
|
{
|
||||||
async move {
|
async move {
|
||||||
let query = query.as_deref();
|
let query = query.as_deref();
|
||||||
|
|
||||||
let mut attempts: u8 = 0;
|
let mut retries: u8 = 0;
|
||||||
for _ in 0..=config.retries {
|
loop {
|
||||||
attempts += 1;
|
|
||||||
|
|
||||||
let method_rate_limit: Arc<RateLimit> = self.method_rate_limits
|
let method_rate_limit: Arc<RateLimit> = self.method_rate_limits
|
||||||
.get_or_insert_with(method_id, || RateLimit::new(RateLimitType::Method));
|
.get_or_insert_with(method_id, || RateLimit::new(RateLimitType::Method));
|
||||||
|
|
||||||
|
@ -63,15 +60,10 @@ impl RegionalRequester {
|
||||||
url.set_path(&*path);
|
url.set_path(&*path);
|
||||||
url.set_query(query);
|
url.set_query(query);
|
||||||
|
|
||||||
let result = client.get(url)
|
let response = client.get(url)
|
||||||
.header(Self::RIOT_KEY_HEADER, &*config.api_key)
|
.header(Self::RIOT_KEY_HEADER, &*config.api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?;
|
||||||
|
|
||||||
let response = match result {
|
|
||||||
Err(e) => return Err(e),
|
|
||||||
Ok(r) => r,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Maybe update rate limits (based on response headers).
|
// Maybe update rate limits (based on response headers).
|
||||||
self.app_rate_limit.on_response(&response);
|
self.app_rate_limit.on_response(&response);
|
||||||
|
@ -79,30 +71,33 @@ impl RegionalRequester {
|
||||||
|
|
||||||
// Handle response.
|
// Handle response.
|
||||||
let status = response.status();
|
let status = response.status();
|
||||||
// Success, return None.
|
log::trace!("Response {} (retried {} times).", status, retries);
|
||||||
|
// Special "none success" cases, return None.
|
||||||
if Self::is_none_status_code(&status) {
|
if Self::is_none_status_code(&status) {
|
||||||
return Ok(None);
|
break Ok(None);
|
||||||
}
|
}
|
||||||
// Success, return a value.
|
// Handle normal success / failure cases.
|
||||||
if status.is_success() {
|
match response.error_for_status_ref() {
|
||||||
let value = response.json::<T>().await;
|
// Success.
|
||||||
return match value {
|
Ok(_) => {
|
||||||
Err(e) => Err(e),
|
let value = response.json::<T>().await;
|
||||||
Ok(v) => Ok(Some(v)),
|
break value.map(|v| Some(v));
|
||||||
}
|
},
|
||||||
}
|
// Failure, may or may not be retryable.
|
||||||
// Retryable.
|
Err(err) => {
|
||||||
if StatusCode::TOO_MANY_REQUESTS == status || status.is_server_error() {
|
// Not-retryable: no more retries or 4xx or ? (3xx, redirects exceeded).
|
||||||
continue;
|
// Retryable: retries remaining, and 429 or 5xx.
|
||||||
}
|
if retries >= config.retries ||
|
||||||
// Failure (non-retryable).
|
(StatusCode::TOO_MANY_REQUESTS != status
|
||||||
if status.is_client_error() {
|
&& !status.is_server_error())
|
||||||
break;
|
{
|
||||||
}
|
break Err(err);
|
||||||
panic!("NOT HANDLED: {}!", status);
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
retries += 1;
|
||||||
}
|
}
|
||||||
// TODO: return error.
|
|
||||||
panic!("FAILED AFTER {} ATTEMPTS!", attempts);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
|
||||||
use log::*;
|
use log;
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
|
|
||||||
use crate::RiotApiConfig;
|
use crate::RiotApiConfig;
|
||||||
|
@ -20,7 +20,7 @@ pub struct RiotApi {
|
||||||
|
|
||||||
impl RiotApi {
|
impl RiotApi {
|
||||||
pub fn with_config(config: RiotApiConfig) -> Self {
|
pub fn with_config(config: RiotApiConfig) -> Self {
|
||||||
trace!("Creating client (TODO: configuration).");
|
log::trace!("Creating client (TODO: configuration).");
|
||||||
Self {
|
Self {
|
||||||
config: config,
|
config: config,
|
||||||
client: Client::new(),
|
client: Client::new(),
|
||||||
|
|
|
@ -15,9 +15,9 @@ pub use dto::*;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|
||||||
use reqwest;
|
|
||||||
use url::form_urlencoded::Serializer;
|
use url::form_urlencoded::Serializer;
|
||||||
|
|
||||||
|
use crate::Result;
|
||||||
use crate::consts::Region;
|
use crate::consts::Region;
|
||||||
use crate::riot_api::RiotApi;
|
use crate::riot_api::RiotApi;
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ impl<'a> {{= endpoint }}<'a> {
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
pub fn {{= method }}(&self, region: Region{{= argBuilder.join('') }})
|
pub fn {{= method }}(&self, region: Region{{= argBuilder.join('') }})
|
||||||
-> impl Future<Output = Result<Option<{{= returnType }}>, reqwest::Error>> + 'a
|
-> impl Future<Output = Result<Option<{{= returnType }}>>> + 'a
|
||||||
{
|
{
|
||||||
{{? queryParams.length }}
|
{{? queryParams.length }}
|
||||||
let mut query_params = Serializer::new(String::new());
|
let mut query_params = Serializer::new(String::new());
|
||||||
|
|
Loading…
Reference in a new issue