1
0
Fork 0

Merge pull request 'fix archive download methods' (#33) from zipball-url into main

Reviewed-on: https://codeberg.org/Cyborus/forgejo-api/pulls/33
This commit is contained in:
Cyborus 2024-01-01 23:00:51 +00:00
commit cb192d8eef
2 changed files with 24 additions and 18 deletions

View file

@ -207,35 +207,29 @@ impl Forgejo {
.await .await
} }
pub async fn download_release_zip( pub async fn download_zip_archive(
&self, &self,
owner: &str, owner: &str,
repo: &str, repo: &str,
release: u64, target: &str,
) -> Result<Option<bytes::Bytes>, ForgejoError> { ) -> Result<Option<bytes::Bytes>, ForgejoError> {
let release = self.get_release(owner, repo, release).await; let request = self
let release = match release { .client
Ok(Some(release)) => release, .get(format!("repos/{owner}/{repo}/archive/{target}.zip"))
Ok(None) => return Ok(None), .build()?;
Err(e) => return Err(e),
};
let request = self.client.get(release.zipball_url).build()?;
self.execute_opt_raw(request).await self.execute_opt_raw(request).await
} }
pub async fn download_release_tarball( pub async fn download_tarball_archive(
&self, &self,
owner: &str, owner: &str,
repo: &str, repo: &str,
release: u64, target: &str,
) -> Result<Option<bytes::Bytes>, ForgejoError> { ) -> Result<Option<bytes::Bytes>, ForgejoError> {
let release = self.get_release(owner, repo, release).await; let request = self
let release = match release { .client
Ok(Some(release)) => release, .get(format!("repos/{owner}/{repo}/archive/{target}.tar.gz"))
Ok(None) => return Ok(None), .build()?;
Err(e) => return Err(e),
};
let request = self.client.get(release.tarball_url).build()?;
self.execute_opt_raw(request).await self.execute_opt_raw(request).await
} }

View file

@ -243,6 +243,18 @@ async fn repo(api: &forgejo_api::Forgejo) -> eyre::Result<()> {
== Some(b"This is a file!"), == Some(b"This is a file!"),
"couldn't download attachment" "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) api.delete_release_attachment("TestingAdmin", "test", release.id, attachment.id)
.await .await