Skip to main content

gitverse_sdk/
releases.rs

1// Code generated by gitverse-codegen. DO NOT EDIT.
2
3use crate::client::{Client, decode_response, handle_empty_response};
4use crate::errors::Error;
5use crate::types::*;
6
7impl Client {
8    /// Returns a list of releases
9    pub async fn list_releases(
10        &self,
11        owner: &str,
12        repo: &str,
13        opts: Option<&QueryOptions>,
14    ) -> Result<Vec<Release>, Error> {
15        let path = format!("/repos/{}/{}/releases", owner, repo);
16        let resp = self.send_get(&path, opts).await?;
17        decode_response(resp).await
18    }
19
20    /// Create a release
21    pub async fn create_releases(
22        &self,
23        owner: &str,
24        repo: &str,
25        params: &CreateReleaseParams,
26    ) -> Result<Release, Error> {
27        let path = format!("/repos/{}/{}/releases", owner, repo);
28        let resp = self.send_post(&path, Some(params)).await?;
29        decode_response(resp).await
30    }
31
32    /// Gets a release by its tag name
33    pub async fn get_by_tag(&self, owner: &str, repo: &str, tag: &str) -> Result<Release, Error> {
34        let path = format!("/repos/{}/{}/releases/tags/{}", owner, repo, tag);
35        let resp = self.send_get(&path, None).await?;
36        decode_response(resp).await
37    }
38
39    /// Deletes a release by its tag name
40    pub async fn delete_by_tag(&self, owner: &str, repo: &str, tag: &str) -> Result<(), Error> {
41        let path = format!("/repos/{}/{}/releases/tags/{}", owner, repo, tag);
42        let resp = self.send_delete(&path, Option::<&()>::None).await?;
43        handle_empty_response(resp).await
44    }
45
46    /// Return a release
47    pub async fn get_releases(
48        &self,
49        owner: &str,
50        repo: &str,
51        release_id: &str,
52    ) -> Result<Release, Error> {
53        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
54        let resp = self.send_get(&path, None).await?;
55        decode_response(resp).await
56    }
57
58    /// Edit a release
59    pub async fn update_releases(
60        &self,
61        owner: &str,
62        repo: &str,
63        release_id: &str,
64        params: &UpdateReleaseParams,
65    ) -> Result<Release, Error> {
66        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
67        let resp = self.send_patch(&path, Some(params)).await?;
68        decode_response(resp).await
69    }
70
71    /// Delete a release
72    pub async fn delete_releases(
73        &self,
74        owner: &str,
75        repo: &str,
76        release_id: &str,
77    ) -> Result<(), Error> {
78        let path = format!("/repos/{}/{}/releases/{}", owner, repo, release_id);
79        let resp = self.send_delete(&path, Option::<&()>::None).await?;
80        handle_empty_response(resp).await
81    }
82
83    /// Returns a list of assets (files) for a release
84    pub async fn list_assets(
85        &self,
86        owner: &str,
87        repo: &str,
88        release_id: &str,
89        opts: Option<&QueryOptions>,
90    ) -> Result<Vec<Attachment>, Error> {
91        let path = format!("/repos/{}/{}/releases/{}/assets", owner, repo, release_id);
92        let resp = self.send_get(&path, opts).await?;
93        decode_response(resp).await
94    }
95
96    /// Upload asset to release
97    pub async fn upload_asset(
98        &self,
99        owner: &str,
100        repo: &str,
101        release_id: &str,
102        _opts: Option<&QueryOptions>,
103    ) -> Result<Attachment, Error> {
104        let path = format!("/repos/{}/{}/releases/{}/assets", owner, repo, release_id);
105        let resp = self.send_post(&path, Option::<&()>::None).await?;
106        decode_response(resp).await
107    }
108
109    /// Delete asset from release
110    pub async fn delete_assets(
111        &self,
112        owner: &str,
113        repo: &str,
114        release_id: &str,
115        asset_id: &str,
116    ) -> Result<(), Error> {
117        let path = format!(
118            "/repos/{}/{}/releases/{}/assets/{}",
119            owner, repo, release_id, asset_id
120        );
121        let resp = self.send_delete(&path, Option::<&()>::None).await?;
122        handle_empty_response(resp).await
123    }
124}