Transfer impl of release_attach to new home

A bunch of code has been dropped because it's no longer necessary -- yay for better data builder usage and real error handling!
This commit is contained in:
2025-05-29 17:40:12 -05:00
parent 29172bae0b
commit 6d95e54bc7
2 changed files with 37 additions and 1 deletions

View File

@@ -1,10 +1,45 @@
use std::fs;
pub fn check_release_match_repo(){} pub fn check_release_match_repo(){}
pub fn get_release_attachment(){} pub fn get_release_attachment(){}
pub fn list_release_attachments(){ pub fn list_release_attachments(){
todo!(); todo!();
} }
pub fn create_release_attachment(){} pub async fn create_release_attachment(
client: &reqwest::Client,
gitea_url: &str,
repo: &str,
release_id: usize,
files: Vec<String>,
) -> crate::Result<()> {
let request_url = format!("{gitea_url}/api/v1/repos/{repo}/releases/{release_id}/assets");
// Ensure all files exists before starting the uploads
for file in &files {
if let Err(e) = fs::exists(file) {
return Err(crate::Error::NoSuchFile);
}
}
for file in files {
println!("Uploading file {}", &file);
let data = reqwest::multipart::Part::stream(fs::read(&file).unwrap())
.file_name("attachment")
.mime_str("text/plain")?;
let form= reqwest::multipart::Form::new()
.part("attachment", data);
let request = client
.post(&request_url)
.multipart(form)
.query(&[("name", file.split("/").last())])
.send()
.await?;
}
Ok(())
}
pub fn edit_release_attachment(){} pub fn edit_release_attachment(){}
pub fn delete_release_attachment(){} pub fn delete_release_attachment(){}

View File

@@ -15,6 +15,7 @@ pub enum Error {
Placeholder, // TODO: Enumerate error modes Placeholder, // TODO: Enumerate error modes
WrappedReqwestErr(reqwest::Error), WrappedReqwestErr(reqwest::Error),
MissingAuthToken, MissingAuthToken,
NoSuchFile, // for release attachment 'file exists' pre-check.
} }
impl From<reqwest::Error> for crate::Error { impl From<reqwest::Error> for crate::Error {