forked from mirror/Riven
1
0
Fork 0

Compare commits

...

2 Commits

5 changed files with 36 additions and 17 deletions

View File

@ -44,6 +44,7 @@ log = "0.4"
num_enum = "0.5" num_enum = "0.5"
parking_lot = "0.12" parking_lot = "0.12"
reqwest = { version = "0.11", default-features = false, features = [ "gzip", "json" ] } reqwest = { version = "0.11", default-features = false, features = [ "gzip", "json" ] }
reqwest-middleware = { git = "https://git.zynh.me/Zynh0722/reqwest-middleware.git" }
scan_fmt = { version = "0.2", default-features = false } scan_fmt = { version = "0.2", default-features = false }
serde = { version = "1.0", features = [ "derive" ] } serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0" serde_json = "1.0"

View File

@ -2,7 +2,7 @@
use std::time::Duration; use std::time::Duration;
use reqwest::header::{HeaderMap, HeaderValue}; use reqwest::header::{HeaderMap, HeaderValue};
use reqwest::ClientBuilder; use reqwest_middleware::ClientBuilder;
/// Configuration for instantiating RiotApi. /// Configuration for instantiating RiotApi.
#[derive(Debug)] #[derive(Debug)]
@ -80,7 +80,7 @@ impl RiotApiConfig {
method_rate_usage_factor: Self::DEFAULT_RATE_USAGE_FACTOR, method_rate_usage_factor: Self::DEFAULT_RATE_USAGE_FACTOR,
burst_factor: Self::PRECONFIG_BURST_BURST_FACTOR, burst_factor: Self::PRECONFIG_BURST_BURST_FACTOR,
duration_overhead: Self::PRECONFIG_BURST_DURATION_OVERHEAD, duration_overhead: Self::PRECONFIG_BURST_DURATION_OVERHEAD,
client_builder: Some(ClientBuilder::new().default_headers(default_headers)), client_builder: Some(ClientBuilder::new(reqwest::ClientBuilder::new().default_headers(default_headers).build().unwrap())),
} }
} }

View File

@ -1,6 +1,7 @@
use std::fmt; use std::fmt;
use reqwest::{Error, Response, StatusCode}; use reqwest::{Response, StatusCode};
use reqwest_middleware::Error;
/// Result containing RiotApiError on failure. /// Result containing RiotApiError on failure.
pub type Result<T> = std::result::Result<T, RiotApiError>; pub type Result<T> = std::result::Result<T, RiotApiError>;

View File

@ -1,7 +1,8 @@
use std::future::Future; use std::future::Future;
use std::sync::Arc; use std::sync::Arc;
use reqwest::{RequestBuilder, StatusCode}; use reqwest::StatusCode;
use reqwest_middleware::RequestBuilder;
#[cfg(feature = "tracing")] #[cfg(feature = "tracing")]
use tracing as log; use tracing as log;
#[cfg(feature = "tracing")] #[cfg(feature = "tracing")]
@ -102,7 +103,7 @@ impl RegionalRequester {
retries retries
); );
break Err(RiotApiError::new( break Err(RiotApiError::new(
err, reqwest_middleware::Error::Reqwest(err),
retries, retries,
Some(response), Some(response),
Some(status), Some(status),

View File

@ -1,7 +1,8 @@
use std::future::Future; use std::future::Future;
use std::sync::Arc; use std::sync::Arc;
use reqwest::{Client, Method, RequestBuilder}; use reqwest::Method;
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
#[cfg(feature = "tracing")] #[cfg(feature = "tracing")]
use tracing as log; use tracing as log;
@ -43,7 +44,7 @@ pub struct RiotApi {
/// Configuration settings. /// Configuration settings.
config: RiotApiConfig, config: RiotApiConfig,
/// Client for making requests. /// Client for making requests.
client: Client, client: ClientWithMiddleware,
/// Per-region requesters. /// Per-region requesters.
regional_requesters: InsertOnlyCHashMap<&'static str, RegionalRequester>, regional_requesters: InsertOnlyCHashMap<&'static str, RegionalRequester>,
@ -59,9 +60,7 @@ impl RiotApi {
.expect("CLIENT_BUILDER IN CONFIG SHOULD NOT BE NONE."); .expect("CLIENT_BUILDER IN CONFIG SHOULD NOT BE NONE.");
Self { Self {
config, config,
client: client_builder client: client_builder.build(),
.build()
.expect("Failed to create client from builder."),
regional_requesters: InsertOnlyCHashMap::new(), regional_requesters: InsertOnlyCHashMap::new(),
} }
} }
@ -103,7 +102,14 @@ impl RiotApi {
let retries = rinfo.retries; let retries = rinfo.retries;
let status = rinfo.response.status(); let status = rinfo.response.status();
let value = rinfo.response.json::<T>().await; let value = rinfo.response.json::<T>().await;
value.map_err(|e| RiotApiError::new(e, retries, None, Some(status))) value.map_err(|e| {
RiotApiError::new(
reqwest_middleware::Error::Reqwest(e),
retries,
None,
Some(status),
)
})
} }
/// This method should generally not be used directly. Consider using endpoint wrappers instead. /// This method should generally not be used directly. Consider using endpoint wrappers instead.
@ -132,7 +138,14 @@ impl RiotApi {
let retries = rinfo.retries; let retries = rinfo.retries;
let status = rinfo.response.status(); let status = rinfo.response.status();
let value = rinfo.response.json::<Option<T>>().await; let value = rinfo.response.json::<Option<T>>().await;
value.map_err(|e| RiotApiError::new(e, retries, None, Some(status))) value.map_err(|e| {
RiotApiError::new(
reqwest_middleware::Error::Reqwest(e),
retries,
None,
Some(status),
)
})
} }
/// This method should generally not be used directly. Consider using endpoint wrappers instead. /// This method should generally not be used directly. Consider using endpoint wrappers instead.
@ -157,11 +170,14 @@ impl RiotApi {
.await?; .await?;
let retries = rinfo.retries; let retries = rinfo.retries;
let status = rinfo.response.status(); let status = rinfo.response.status();
rinfo rinfo.response.error_for_status().map(|_| ()).map_err(|e| {
.response RiotApiError::new(
.error_for_status() reqwest_middleware::Error::Reqwest(e),
.map(|_| ()) retries,
.map_err(|e| RiotApiError::new(e, retries, None, Some(status))) None,
Some(status),
)
})
} }
/// This method should generally not be used directly. Consider using endpoint wrappers instead. /// This method should generally not be used directly. Consider using endpoint wrappers instead.