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"
parking_lot = "0.12"
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 }
serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0"

View File

@ -2,7 +2,7 @@
use std::time::Duration;
use reqwest::header::{HeaderMap, HeaderValue};
use reqwest::ClientBuilder;
use reqwest_middleware::ClientBuilder;
/// Configuration for instantiating RiotApi.
#[derive(Debug)]
@ -80,7 +80,7 @@ impl RiotApiConfig {
method_rate_usage_factor: Self::DEFAULT_RATE_USAGE_FACTOR,
burst_factor: Self::PRECONFIG_BURST_BURST_FACTOR,
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 reqwest::{Error, Response, StatusCode};
use reqwest::{Response, StatusCode};
use reqwest_middleware::Error;
/// Result containing RiotApiError on failure.
pub type Result<T> = std::result::Result<T, RiotApiError>;

View File

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

View File

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