diff --git a/src/repository.rs b/src/repository.rs index d9a92b1..e56fad5 100644 --- a/src/repository.rs +++ b/src/repository.rs @@ -207,35 +207,29 @@ impl Forgejo { .await } - pub async fn download_release_zip( + pub async fn download_zip_archive( &self, owner: &str, repo: &str, - release: u64, + target: &str, ) -> Result, ForgejoError> { - let release = self.get_release(owner, repo, release).await; - let release = match release { - Ok(Some(release)) => release, - Ok(None) => return Ok(None), - Err(e) => return Err(e), - }; - let request = self.client.get(release.zipball_url).build()?; + let request = self + .client + .get(format!("repos/{owner}/{repo}/archive/{target}.zip")) + .build()?; self.execute_opt_raw(request).await } - pub async fn download_release_tarball( + pub async fn download_tarball_archive( &self, owner: &str, repo: &str, - release: u64, + target: &str, ) -> Result, ForgejoError> { - let release = self.get_release(owner, repo, release).await; - let release = match release { - Ok(Some(release)) => release, - Ok(None) => return Ok(None), - Err(e) => return Err(e), - }; - let request = self.client.get(release.tarball_url).build()?; + let request = self + .client + .get(format!("repos/{owner}/{repo}/archive/{target}.tar.gz")) + .build()?; self.execute_opt_raw(request).await } diff --git a/tests/ci_test.rs b/tests/ci_test.rs index 3d98f71..c7e3b90 100644 --- a/tests/ci_test.rs +++ b/tests/ci_test.rs @@ -243,6 +243,18 @@ async fn repo(api: &forgejo_api::Forgejo) -> eyre::Result<()> { == Some(b"This is a file!"), "couldn't download attachment" ); + ensure!( + api.download_zip_archive("TestingAdmin", "test", "v1.0") + .await? + .is_some(), + "couldn't download zip archive" + ); + ensure!( + api.download_tarball_archive("TestingAdmin", "test", "v1.0") + .await? + .is_some(), + "couldn't download tape archive" + ); api.delete_release_attachment("TestingAdmin", "test", release.id, attachment.id) .await