Improve alpaca request error handling

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-03-13 19:45:06 +00:00
parent f3f9c6336b
commit 1707d74cf7
10 changed files with 73 additions and 86 deletions

View File

@@ -1,3 +1,4 @@
use super::{error_to_backoff, status_error_to_backoff};
use crate::types::alpaca::api::incoming::clock::Clock;
use backoff::{future::retry_notify, ExponentialBackoff};
use governor::DefaultDirectRateLimiter;
@@ -18,17 +19,13 @@ pub async fn get(
client
.get(&format!("https://{}.alpaca.markets/v2/clock", api_base))
.send()
.await?
.await
.map_err(error_to_backoff)?
.error_for_status()
.map_err(|e| match e.status() {
Some(reqwest::StatusCode::BAD_REQUEST | reqwest::StatusCode::FORBIDDEN) => {
backoff::Error::Permanent(e)
}
_ => e.into(),
})?
.map_err(status_error_to_backoff)?
.json::<Clock>()
.await
.map_err(backoff::Error::Permanent)
.map_err(error_to_backoff)
},
|e, duration: Duration| {
warn!(