Fold client-error-decode into a util function

This commit is contained in:
2025-06-07 23:40:58 -05:00
parent 0c70b584ba
commit 4a0addda67
3 changed files with 12 additions and 18 deletions

View File

@@ -32,12 +32,7 @@ pub async fn list_releases(
})?;
return Ok(release_list);
} else if response.status().is_client_error() {
let mesg = response
.json::<ApiError>()
.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::<ApiError>()
.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");

View File

@@ -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::<ApiError>()
.await
.map_err(|reqwest_err| {
crate::Error::WrappedReqwestErr(reqwest_err)
})?;
let mesg = crate::decode_client_error(response).await?;
return Err(crate::Error::ApiErrorMessage(mesg));
}
}

View File

@@ -10,6 +10,15 @@ pub struct ApiError {
url: String,
}
pub (crate) async fn decode_client_error(response: reqwest::Response) -> Result<ApiError> {
response
.json::<ApiError>()
.await
.map_err(|reqwest_err| {
crate::Error::WrappedReqwestErr(reqwest_err)
})
}
#[derive(Debug)]
pub enum Error {
Placeholder, // TODO: Enumerate error modes