use crate::{ Result, structs::release::{CreateReleaseOption, Release}, }; pub fn get_release(_id: u64) -> Result { todo!(); } pub fn get_latest_release() -> Result { todo!(); } pub async fn list_releases( client: &reqwest::Client, gitea_url: &str, repo: &str, ) -> Result> { let request_url = format!("{gitea_url}/api/v1/repos/{repo}/releases/"); let req = client.get(request_url).send().await; let response = req.map_err(crate::Error::WrappedReqwestErr)?; if response.status().is_success() { let release_list = response .json::>() .await .map_err(|reqwest_err| { // Convert reqwest errors to my own // TODO: Create all error variants (see lib.rs) crate::Error::WrappedReqwestErr(reqwest_err) })?; return Ok(release_list); } else if response.status().is_client_error() { 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."); } pub async fn create_release( client: &reqwest::Client, gitea_url: &str, repo: &str, submission: CreateReleaseOption, ) -> Result { let request_url = format!("{gitea_url}/api/v1/repos/{repo}/releases"); let response = client .post(request_url) .json(&submission) .send() .await .map_err(crate::Error::from)?; if response.status().is_success() { let new_release = response .json::() .await .map_err(crate::Error::from)?; return Ok(new_release); } else if response.status().is_client_error() { 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"); } pub fn edit_release(_id: u64) -> Result { todo!(); } pub fn delete_release(_id: u64) -> Result<()> { todo!(); }