From 4a0addda67ef4d1df783f440de29af5f326f261e Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sat, 7 Jun 2025 23:40:58 -0500 Subject: [PATCH] Fold client-error-decode into a util function --- src/api/release.rs | 14 ++------------ src/api/release_attachment.rs | 7 +------ src/lib.rs | 9 +++++++++ 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/api/release.rs b/src/api/release.rs index 474c991..b9d3290 100644 --- a/src/api/release.rs +++ b/src/api/release.rs @@ -32,12 +32,7 @@ pub async fn list_releases( })?; return Ok(release_list); } else if response.status().is_client_error() { - let mesg = response - .json::() - .await - .map_err(|reqwest_err| { - crate::Error::WrappedReqwestErr(reqwest_err) - })?; + let mesg = crate::decode_client_error(response).await?; return Err(crate::Error::ApiErrorMessage(mesg)); } panic!("Reached end of list_releases without matching a return pathway."); @@ -63,12 +58,7 @@ pub async fn create_release( .map_err(|e| crate::Error::from(e))?; return Ok(new_release); } else if response.status().is_client_error() { - let mesg = response - .json::() - .await - .map_err(|reqwest_err| { - crate::Error::WrappedReqwestErr(reqwest_err) - })?; + let mesg = crate::decode_client_error(response).await?; return Err(crate::Error::ApiErrorMessage(mesg)) } panic!("Reached end of create_release without matching a return path"); diff --git a/src/api/release_attachment.rs b/src/api/release_attachment.rs index fb9e072..0a3def3 100644 --- a/src/api/release_attachment.rs +++ b/src/api/release_attachment.rs @@ -45,12 +45,7 @@ pub async fn create_release_attachment( if response.status().is_success() { // TODO: create a struct Attachment and return it to the caller. } else if response.status().is_client_error() { - let mesg = response - .json::() - .await - .map_err(|reqwest_err| { - crate::Error::WrappedReqwestErr(reqwest_err) - })?; + let mesg = crate::decode_client_error(response).await?; return Err(crate::Error::ApiErrorMessage(mesg)); } } diff --git a/src/lib.rs b/src/lib.rs index 14cfab7..42cac0a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,15 @@ pub struct ApiError { url: String, } +pub (crate) async fn decode_client_error(response: reqwest::Response) -> Result { + response + .json::() + .await + .map_err(|reqwest_err| { + crate::Error::WrappedReqwestErr(reqwest_err) + }) +} + #[derive(Debug)] pub enum Error { Placeholder, // TODO: Enumerate error modes