From ee42e096209122aadc444645f390dc866e214f0c Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Sat, 31 May 2025 22:46:54 -0500 Subject: [PATCH] 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. --- src/api/release.rs | 16 +++++++++++++--- src/lib.rs | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/api/release.rs b/src/api/release.rs index 4d12f0f..66e5f87 100644 --- a/src/api/release.rs +++ b/src/api/release.rs @@ -1,6 +1,6 @@ use crate::{ - structs::release::{CreateReleaseOption, Release}, Result + structs::release::{CreateReleaseOption, Release}, CreateResult, Result }; pub fn get_release(id: u64) -> Result { todo!(); } @@ -45,10 +45,20 @@ pub async fn create_release( .await .map_err(|e| crate::Error::from(e))?; let new_release = req - .json::() + .json::() .await .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 { todo!(); } pub fn delete_release(id: u64) -> Result<()> { todo!(); } diff --git a/src/lib.rs b/src/lib.rs index 2e07f25..e396eec 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,7 @@ pub enum Error { WrappedReqwestErr(reqwest::Error), MissingAuthToken, NoSuchFile, // for release attachment 'file exists' pre-check. + ApiErrorMessage(ApiError), } impl From for crate::Error {