Fold client-error-decode into a util function
This commit is contained in:
@@ -32,12 +32,7 @@ pub async fn list_releases(
|
|||||||
})?;
|
})?;
|
||||||
return Ok(release_list);
|
return Ok(release_list);
|
||||||
} else if response.status().is_client_error() {
|
} else if response.status().is_client_error() {
|
||||||
let mesg = response
|
let mesg = crate::decode_client_error(response).await?;
|
||||||
.json::<ApiError>()
|
|
||||||
.await
|
|
||||||
.map_err(|reqwest_err| {
|
|
||||||
crate::Error::WrappedReqwestErr(reqwest_err)
|
|
||||||
})?;
|
|
||||||
return Err(crate::Error::ApiErrorMessage(mesg));
|
return Err(crate::Error::ApiErrorMessage(mesg));
|
||||||
}
|
}
|
||||||
panic!("Reached end of list_releases without matching a return pathway.");
|
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))?;
|
.map_err(|e| crate::Error::from(e))?;
|
||||||
return Ok(new_release);
|
return Ok(new_release);
|
||||||
} else if response.status().is_client_error() {
|
} else if response.status().is_client_error() {
|
||||||
let mesg = response
|
let mesg = crate::decode_client_error(response).await?;
|
||||||
.json::<ApiError>()
|
|
||||||
.await
|
|
||||||
.map_err(|reqwest_err| {
|
|
||||||
crate::Error::WrappedReqwestErr(reqwest_err)
|
|
||||||
})?;
|
|
||||||
return Err(crate::Error::ApiErrorMessage(mesg))
|
return Err(crate::Error::ApiErrorMessage(mesg))
|
||||||
}
|
}
|
||||||
panic!("Reached end of create_release without matching a return path");
|
panic!("Reached end of create_release without matching a return path");
|
||||||
|
|||||||
@@ -45,12 +45,7 @@ pub async fn create_release_attachment(
|
|||||||
if response.status().is_success() {
|
if response.status().is_success() {
|
||||||
// TODO: create a struct Attachment and return it to the caller.
|
// TODO: create a struct Attachment and return it to the caller.
|
||||||
} else if response.status().is_client_error() {
|
} else if response.status().is_client_error() {
|
||||||
let mesg = response
|
let mesg = crate::decode_client_error(response).await?;
|
||||||
.json::<ApiError>()
|
|
||||||
.await
|
|
||||||
.map_err(|reqwest_err| {
|
|
||||||
crate::Error::WrappedReqwestErr(reqwest_err)
|
|
||||||
})?;
|
|
||||||
return Err(crate::Error::ApiErrorMessage(mesg));
|
return Err(crate::Error::ApiErrorMessage(mesg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,15 @@ pub struct ApiError {
|
|||||||
url: String,
|
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)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
Placeholder, // TODO: Enumerate error modes
|
Placeholder, // TODO: Enumerate error modes
|
||||||
|
|||||||
Reference in New Issue
Block a user