gitverse-sdk 1.2.1

Rust SDK for GitVerse API
Documentation
// Code generated by gitverse-codegen. DO NOT EDIT.

use crate::client::{Client, decode_response, handle_empty_response};
use crate::errors::Error;
use crate::types::*;

impl Client {
    /// Returns a list of releases
    pub async fn list_releases(
        &self,
        owner: &str,
        repo: &str,
        opts: Option<&QueryOptions>,
    ) -> Result<Vec<Release>, Error> {
        let path = format!("/repos/{}/{}/releases", owner, repo);
        let resp = self.send_get(&path, opts).await?;
        decode_response(resp).await
    }

    /// Create a release
    pub async fn create_releases(
        &self,
        owner: &str,
        repo: &str,
        params: &CreateReleaseParams,
    ) -> Result<Release, Error> {
        let path = format!("/repos/{}/{}/releases", owner, repo);
        let resp = self.send_post(&path, Some(params)).await?;
        decode_response(resp).await
    }

    /// Gets a release by its tag name
    pub async fn get_by_tag(&self, owner: &str, repo: &str, tag: &str) -> Result<Release, Error> {
        let path = format!("/repos/{}/{}/releases/tags/{}", owner, repo, tag);
        let resp = self.send_get(&path, None).await?;
        decode_response(resp).await
    }

    /// Deletes a release by its tag name
    pub async fn delete_by_tag(&self, owner: &str, repo: &str, tag: &str) -> Result<(), Error> {
        let path = format!("/repos/{}/{}/releases/tags/{}", owner, repo, tag);
        let resp = self.send_delete(&path, Option::<&()>::None).await?;
        handle_empty_response(resp).await
    }

    /// Return a release
    pub async fn get_releases(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
    ) -> Result<Release, Error> {
        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
        let resp = self.send_get(&path, None).await?;
        decode_response(resp).await
    }

    /// Edit a release
    pub async fn update_releases(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
        params: &UpdateReleaseParams,
    ) -> Result<Release, Error> {
        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
        let resp = self.send_patch(&path, Some(params)).await?;
        decode_response(resp).await
    }

    /// Delete a release
    pub async fn delete_releases(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
    ) -> Result<(), Error> {
        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
        let resp = self.send_delete(&path, Option::<&()>::None).await?;
        handle_empty_response(resp).await
    }

    /// Returns a list of assets (files) for a release
    pub async fn list_assets(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
        opts: Option<&QueryOptions>,
    ) -> Result<Vec<Attachment>, Error> {
        let path = format!("/repos/{}/{}/releases/{}/assets", owner, repo, release_id);
        let resp = self.send_get(&path, opts).await?;
        decode_response(resp).await
    }

    /// Upload asset to release
    pub async fn upload_asset(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
        _opts: Option<&QueryOptions>,
    ) -> Result<Attachment, Error> {
        let path = format!("/repos/{}/{}/releases/{}/assets", owner, repo, release_id);
        let resp = self.send_post(&path, Option::<&()>::None).await?;
        decode_response(resp).await
    }

    /// Delete asset from release
    pub async fn delete_assets(
        &self,
        owner: &str,
        repo: &str,
        release_id: &str,
        asset_id: &str,
    ) -> Result<(), Error> {
        let path = format!(
            "/repos/{}/{}/releases/{}/assets/{}",
            owner, repo, release_id, asset_id
        );
        let resp = self.send_delete(&path, Option::<&()>::None).await?;
        handle_empty_response(resp).await
    }
}