From 4250deb419ff53f53d62f3ba10531088418f9a5f Mon Sep 17 00:00:00 2001 From: Robert Garrett Date: Wed, 28 May 2025 20:27:52 -0500 Subject: [PATCH] Implement new fn create_release() --- src/api/release.rs | 22 ++++++++++++++++++++-- src/lib.rs | 10 +++++++++- src/main.rs | 5 ++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/api/release.rs b/src/api/release.rs index 2805f37..4d12f0f 100644 --- a/src/api/release.rs +++ b/src/api/release.rs @@ -1,6 +1,6 @@ use crate::{ - structs::release::Release, Result + structs::release::{CreateReleaseOption, Release}, Result }; pub fn get_release(id: u64) -> Result { todo!(); } @@ -31,7 +31,25 @@ pub async fn list_releases( return Ok(release_list); } -pub fn create_release() -> Result { todo!(); } +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 req = client + .post(request_url) + .json(&submission) + .send() + .await + .map_err(|e| crate::Error::from(e))?; + let new_release = req + .json::() + .await + .map_err(|e| crate::Error::from(e))?; + return Ok(new_release); +} 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 6a0d338..a426c9d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,8 +13,16 @@ pub struct ApiError { #[derive(Debug)] pub enum Error { Placeholder, // TODO: Enumerate error modes - WrappedReqwestErr(reqwest::Error) + WrappedReqwestErr(reqwest::Error), + MissingAuthToken, } + +impl From for crate::Error { + fn from(value: reqwest::Error) -> Self { + Self::WrappedReqwestErr(value) + } +} + type Result = core::result::Result; #[derive(Debug, Deserialize, Serialize)] diff --git a/src/main.rs b/src/main.rs index d8ab9ae..9479587 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,9 +55,8 @@ async fn main() -> Result<(), gt_tools::Error> { tag_name, target_commitish, }; - do_create_release(&client, &args.gitea_url, &args.repo, submission) - .await - .map_err(reqwest_to_gttool)?; + gt_tools::api::release::create_release(&client, &args.gitea_url, &args.repo, submission) + .await?; } gt_tools::cli::Commands::UploadRelease { tag_name,