diff --git a/src/api/release.rs b/src/api/release.rs index 39bf521..f59deab 100644 --- a/src/api/release.rs +++ b/src/api/release.rs @@ -1,8 +1,37 @@ -pub fn get_release(){} -pub fn get_latest_release(){} -pub fn list_releases(){} -pub fn create_release(){} -pub fn edit_release(){} -pub fn delete_release(){} +use crate::{ + structs::release::Release, Result +}; + +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}/repos/{repo}/releases/"); + let req = client + .get(request_url) + .send() + .await; + let response = req + .map_err(|reqwest_err| { + crate::Error::WrappedReqwestErr(reqwest_err) + })?; + 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); +} + +pub fn create_release() -> Result { todo!(); } +pub fn edit_release(id: u64) -> Result { todo!(); } +pub fn delete_release(id: u64) -> Result<()> { todo!(); }