Skip to content

Commit

Permalink
fix: better errors
Browse files Browse the repository at this point in the history
  • Loading branch information
pxseu committed Sep 25, 2022
1 parent dd17fe7 commit 5db63d3
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions src/state/http/mod.rs
@@ -1,6 +1,7 @@
mod types;

use anyhow::{anyhow, Result};
use hyper::StatusCode;
use reqwest::header::HeaderMap;
use reqwest::Client as AsyncClient;

Expand Down Expand Up @@ -55,10 +56,15 @@ impl HttpClient {
T: serde::de::DeserializeOwned,
{
let response = match response.status() {
reqwest::StatusCode::OK => response,
reqwest::StatusCode::CREATED => return Ok(None),
reqwest::StatusCode::NO_CONTENT => return Ok(None),
_ => return self.handle_error(response).await,
StatusCode::CREATED => return Ok(None),
StatusCode::NO_CONTENT => return Ok(None),
status => {
if !status.clone().is_success() {
return self.handle_error(response, status).await;
}

response
}
};

match response.json::<Base<T>>().await {
Expand All @@ -67,12 +73,20 @@ impl HttpClient {
}
}

async fn handle_error<T>(&self, response: reqwest::Response) -> Result<Option<T>> {
async fn handle_error<T>(
&self,
response: reqwest::Response,
status: StatusCode,
) -> Result<Option<T>> {
let body = response.json::<ErrorResponse>().await;

match body {
Ok(body) => Err(anyhow!("{}", body.error.message)),
Err(err) => Err(anyhow!("Failed to parse error response: {}", err)),
Err(err) => {
log::debug!("Error deserialize message: {:#?}", err);

Err(anyhow!("Error: HTTP {:#?}", status))
}
}
}

Expand Down

0 comments on commit 5db63d3

Please sign in to comment.