From fe76b2ac66cd0810ae9ec97b6e06a41e89e162ba Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 24 Jan 2023 23:06:17 +0100 Subject: [PATCH] feat: add error message to HttpStatus error dont create reports on http status errors --- src/client/channel_rss.rs | 6 +++--- src/client/mod.rs | 26 +++++++++----------------- src/error.rs | 4 ++-- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/client/channel_rss.rs b/src/client/channel_rss.rs index 8153755..ca78521 100644 --- a/src/client/channel_rss.rs +++ b/src/client/channel_rss.rs @@ -25,9 +25,9 @@ impl RustyPipeQuery { .http_request_txt(self.client.inner.http.get(&url).build()?) .await .map_err(|e| match e { - Error::HttpStatus(404) => Error::Extraction(ExtractionError::ContentUnavailable( - "Channel not found".into(), - )), + Error::HttpStatus(404, _) => Error::Extraction( + ExtractionError::ContentUnavailable("Channel not found".into()), + ), _ => e, })?; diff --git a/src/client/mod.rs b/src/client/mod.rs index 93ab2ed..b454b8e 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -538,7 +538,7 @@ impl RustyPipe { let status = res.status(); if status.is_client_error() || status.is_server_error() { - Err(Error::HttpStatus(status.into())) + Err(Error::HttpStatus(status.into(), "none".into())) } else { Ok(res) } @@ -1086,26 +1086,18 @@ impl RustyPipeQuery { }; if status.is_client_error() || status.is_server_error() { - let status_code = status.as_u16(); + let error_msg = serde_json::from_str::(&resp_str) + .map(|r| r.error.message) + .unwrap_or_default(); return match status { StatusCode::NOT_FOUND => Err(Error::Extraction( - ExtractionError::ContentUnavailable("404 Not found".into()), + ExtractionError::ContentUnavailable(error_msg.into()), )), - StatusCode::BAD_REQUEST => { - let error_res = serde_json::from_str::(&resp_str); - Err(Error::Extraction(ExtractionError::BadRequest( - error_res - .map(|r| r.error.message) - .unwrap_or_default() - .into(), - ))) - } - _ => { - let e = Error::HttpStatus(status_code); - create_report(Level::ERR, Some(e.to_string()), vec![]); - Err(e) - } + StatusCode::BAD_REQUEST => Err(Error::Extraction(ExtractionError::BadRequest( + error_msg.into(), + ))), + _ => Err(Error::HttpStatus(status.as_u16(), error_msg.into())), }; } diff --git a/src/error.rs b/src/error.rs index abd7989..101bbfc 100644 --- a/src/error.rs +++ b/src/error.rs @@ -19,8 +19,8 @@ pub enum Error { #[error("http error: {0}")] Http(#[from] reqwest::Error), /// Erroneous HTTP status code received - #[error("http status code: {0}")] - HttpStatus(u16), + #[error("http status code: {0} message: {1}")] + HttpStatus(u16, Cow<'static, str>), /// Unspecified error #[error("error: {0}")] Other(Cow<'static, str>),