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:
		
						commit
						cb192d8eef
					
				
					 2 changed files with 24 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -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<Option<bytes::Bytes>, 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<Option<bytes::Bytes>, 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
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue