forked from mirror/Riven
Compare commits
2 Commits
v/2.x.x
...
feat-middl
Author | SHA1 | Date |
---|---|---|
Zynh0722 | fdad6dd0c4 | |
Zynh0722 | 595553dcaf |
|
@ -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"
|
||||||
|
|
|
@ -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())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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>;
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue