1
0
Fork 0
This commit is contained in:
Cyborus 2023-12-15 12:02:39 -05:00
parent e725903eb9
commit 96124821ba
No known key found for this signature in database
3 changed files with 29 additions and 8 deletions

View file

@ -180,9 +180,12 @@ impl Forgejo {
status => Err(ForgejoError::UnexpectedStatusCode(status)), status => Err(ForgejoError::UnexpectedStatusCode(status)),
} }
} }
/// Like `execute`, but returns a `String`. /// Like `execute`, but returns a `String`.
async fn execute_opt_raw(&self, request: Request) -> Result<Option<bytes::Bytes>, ForgejoError> { async fn execute_opt_raw(
&self,
request: Request,
) -> Result<Option<bytes::Bytes>, ForgejoError> {
let response = self.client.execute(request).await?; let response = self.client.execute(request).await?;
match response.status() { match response.status() {
status if status.is_success() => Ok(Some(response.bytes().await?)), status if status.is_success() => Ok(Some(response.bytes().await?)),

View file

@ -207,7 +207,12 @@ impl Forgejo {
.await .await
} }
pub async fn download_release_zip(&self, owner: &str, repo: &str, release: u64) -> Result<Option<bytes::Bytes>, ForgejoError> { pub async fn download_release_zip(
&self,
owner: &str,
repo: &str,
release: u64,
) -> Result<Option<bytes::Bytes>, ForgejoError> {
let release = self.get_release(owner, repo, release).await; let release = self.get_release(owner, repo, release).await;
let release = match release { let release = match release {
Ok(Some(release)) => release, Ok(Some(release)) => release,
@ -218,7 +223,12 @@ impl Forgejo {
self.execute_opt_raw(request).await self.execute_opt_raw(request).await
} }
pub async fn download_release_tarball(&self, owner: &str, repo: &str, release: u64) -> Result<Option<bytes::Bytes>, ForgejoError> { pub async fn download_release_tarball(
&self,
owner: &str,
repo: &str,
release: u64,
) -> Result<Option<bytes::Bytes>, ForgejoError> {
let release = self.get_release(owner, repo, release).await; let release = self.get_release(owner, repo, release).await;
let release = match release { let release = match release {
Ok(Some(release)) => release, Ok(Some(release)) => release,
@ -229,8 +239,16 @@ impl Forgejo {
self.execute_opt_raw(request).await self.execute_opt_raw(request).await
} }
pub async fn download_release_attachment(&self, owner: &str, repo: &str, release: u64, attach: u64) -> Result<Option<bytes::Bytes>, ForgejoError> { pub async fn download_release_attachment(
let release = self.get_release_attachment(owner, repo, release, attach).await?; &self,
owner: &str,
repo: &str,
release: u64,
attach: u64,
) -> Result<Option<bytes::Bytes>, ForgejoError> {
let release = self
.get_release_attachment(owner, repo, release, attach)
.await?;
let request = self.client.get(release.browser_download_url).build()?; let request = self.client.get(release.browser_download_url).build()?;
self.execute_opt_raw(request).await self.execute_opt_raw(request).await
} }

View file

@ -224,10 +224,10 @@ async fn repo(api: &forgejo_api::Forgejo) -> eyre::Result<()> {
api.download_release_attachment("TestingAdmin", "test", release.id, attachment.id) api.download_release_attachment("TestingAdmin", "test", release.id, attachment.id)
.await? .await?
.as_deref() .as_deref()
== Some(b"This is a file!"), == Some(b"This is a file!"),
"couldn't download attachment" "couldn't download attachment"
); );
api.delete_release_attachment("TestingAdmin", "test", release.id, attachment.id) api.delete_release_attachment("TestingAdmin", "test", release.id, attachment.id)
.await .await
.wrap_err("failed to deleted attachment")?; .wrap_err("failed to deleted attachment")?;