Fix API response decoding -- sometimes it's an err

The reqwest might work, but the API still returns an error message.
I forgot about this old hack I had left around because I'm a big dummy.
This commit is contained in:
2025-05-31 22:46:54 -05:00
parent 8ab1f77b0e
commit ee42e09620
2 changed files with 14 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
use crate::{ use crate::{
structs::release::{CreateReleaseOption, Release}, Result structs::release::{CreateReleaseOption, Release}, CreateResult, Result
}; };
pub fn get_release(id: u64) -> Result<Release> { todo!(); } pub fn get_release(id: u64) -> Result<Release> { todo!(); }
@@ -45,10 +45,20 @@ pub async fn create_release(
.await .await
.map_err(|e| crate::Error::from(e))?; .map_err(|e| crate::Error::from(e))?;
let new_release = req let new_release = req
.json::<Release>() .json::<CreateResult>()
.await .await
.map_err(|e| crate::Error::from(e))?; .map_err(|e| crate::Error::from(e))?;
return Ok(new_release); match new_release {
CreateResult::Success(release) => Ok(release),
CreateResult::ErrWithMessage(api_error) => {
if api_error.message == "token is required" {
Err(crate::Error::MissingAuthToken)
} else {
Err(crate::Error::ApiErrorMessage(api_error))
}
},
CreateResult::Empty => panic!("How can we have 200 OK and no release info? No. Crash"),
}
} }
pub fn edit_release(id: u64) -> Result<Release> { todo!(); } pub fn edit_release(id: u64) -> Result<Release> { todo!(); }
pub fn delete_release(id: u64) -> Result<()> { todo!(); } pub fn delete_release(id: u64) -> Result<()> { todo!(); }

View File

@@ -16,6 +16,7 @@ pub enum Error {
WrappedReqwestErr(reqwest::Error), WrappedReqwestErr(reqwest::Error),
MissingAuthToken, MissingAuthToken,
NoSuchFile, // for release attachment 'file exists' pre-check. NoSuchFile, // for release attachment 'file exists' pre-check.
ApiErrorMessage(ApiError),
} }
impl From<reqwest::Error> for crate::Error { impl From<reqwest::Error> for crate::Error {