Skip to main content

gitverse_sdk/
repositories.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    /// Get repository details
9    pub async fn get(&self, owner: &str, repo: &str) -> Result<Repository, Error> {
10        let path = format!("/repos/{}/{}", owner, repo);
11        let resp = self.send_get(&path, None).await?;
12        decode_response(resp).await
13    }
14
15    /// Update repository
16    pub async fn update(
17        &self,
18        owner: &str,
19        repo: &str,
20        params: &UpdateRepositoryParams,
21    ) -> Result<Repository, Error> {
22        let path = format!("/repos/{}/{}", owner, repo);
23        let resp = self.send_patch(&path, Some(params)).await?;
24        decode_response(resp).await
25    }
26
27    /// Delete repository
28    pub async fn delete(&self, owner: &str, repo: &str) -> Result<(), Error> {
29        let path = format!("/repos/{}/{}", owner, repo);
30        let resp = self.send_delete(&path, Option::<&()>::None).await?;
31        handle_empty_response(resp).await
32    }
33
34    /// Gets a list of repository secrets
35    pub async fn list_repo_secrets(
36        &self,
37        owner: &str,
38        repo: &str,
39        opts: Option<&QueryOptions>,
40    ) -> Result<SecretList, Error> {
41        let path = format!("/repos/{}/{}/actions/secrets", owner, repo);
42        let resp = self.send_get(&path, opts).await?;
43        decode_response(resp).await
44    }
45
46    /// Gets secrets metadata (without values) in repositories.
47    pub async fn get_repo_secret(
48        &self,
49        owner: &str,
50        repo: &str,
51        secretname: &str,
52    ) -> Result<Secret, Error> {
53        let path = format!("/repos/{}/{}/actions/secrets/{}", owner, repo, secretname);
54        let resp = self.send_get(&path, None).await?;
55        decode_response(resp).await
56    }
57
58    /// Creates or updates a secret in the repository
59    pub async fn create_or_update_repo_secret(
60        &self,
61        owner: &str,
62        repo: &str,
63        secretname: &str,
64        _opts: Option<&QueryOptions>,
65    ) -> Result<Secret, Error> {
66        let path = format!("/repos/{}/{}/actions/secrets/{}", owner, repo, secretname);
67        let resp = self.send_put(&path, Option::<&()>::None).await?;
68        decode_response(resp).await
69    }
70
71    /// Removes a secret from the repository
72    pub async fn delete_repo_secret(
73        &self,
74        owner: &str,
75        repo: &str,
76        secretname: &str,
77    ) -> Result<(), Error> {
78        let path = format!("/repos/{}/{}/actions/secrets/{}", owner, repo, secretname);
79        let resp = self.send_delete(&path, Option::<&()>::None).await?;
80        handle_empty_response(resp).await
81    }
82
83    /// List repository branches
84    pub async fn list_branches(
85        &self,
86        owner: &str,
87        repo: &str,
88        opts: Option<&QueryOptions>,
89    ) -> Result<Vec<Branch>, Error> {
90        let path = format!("/repos/{}/{}/branches", owner, repo);
91        let resp = self.send_get(&path, opts).await?;
92        decode_response(resp).await
93    }
94
95    /// List repository collaborators
96    pub async fn list_collaborators(
97        &self,
98        owner: &str,
99        repo: &str,
100        opts: Option<&QueryOptions>,
101    ) -> Result<Vec<Collaborator>, Error> {
102        let path = format!("/repos/{}/{}/collaborators", owner, repo);
103        let resp = self.send_get(&path, opts).await?;
104        decode_response(resp).await
105    }
106
107    /// Add or update repository collaborator
108    pub async fn add_collaborator(
109        &self,
110        owner: &str,
111        repo: &str,
112        collaborator: &str,
113        params: &AddCollaboratorParams,
114    ) -> Result<CollaboratorInvitation, Error> {
115        let path = format!("/repos/{}/{}/collaborators/{}", owner, repo, collaborator);
116        let resp = self.send_put(&path, Some(params)).await?;
117        decode_response(resp).await
118    }
119
120    /// Retrieve a list of repository commits
121    pub async fn list_commits(
122        &self,
123        owner: &str,
124        repo: &str,
125        opts: Option<&QueryOptions>,
126    ) -> Result<Vec<Commit>, Error> {
127        let path = format!("/repos/{}/{}/commits", owner, repo);
128        let resp = self.send_get(&path, opts).await?;
129        decode_response(resp).await
130    }
131
132    /// Retrieve commit information
133    pub async fn get_commit(&self, owner: &str, repo: &str, sha: &str) -> Result<Commit, Error> {
134        let path = format!("/repos/{}/{}/commits/{}", owner, repo, sha);
135        let resp = self.send_get(&path, None).await?;
136        decode_response(resp).await
137    }
138
139    /// Compare two branches/tags/commits
140    pub async fn compare_commits(
141        &self,
142        owner: &str,
143        repo: &str,
144        basehead: &str,
145        opts: Option<&QueryOptions>,
146    ) -> Result<CompareResponse, Error> {
147        let path = format!("/repos/{}/{}/compare/{}", owner, repo, basehead);
148        let resp = self.send_get(&path, opts).await?;
149        decode_response(resp).await
150    }
151
152    /// Get file or directory contents
153    pub async fn get_content(
154        &self,
155        owner: &str,
156        repo: &str,
157        filepath: &str,
158        opts: Option<&QueryOptions>,
159    ) -> Result<ContentsResponse, Error> {
160        let path = format!("/repos/{}/{}/contents/{}", owner, repo, filepath);
161        let resp = self.send_get(&path, opts).await?;
162        decode_response(resp).await
163    }
164
165    /// Create or update file in repository
166    pub async fn create_or_update_file(
167        &self,
168        owner: &str,
169        repo: &str,
170        filepath: &str,
171        params: &CreateFileParams,
172    ) -> Result<FileCreationResponse, Error> {
173        let path = format!("/repos/{}/{}/contents/{}", owner, repo, filepath);
174        let resp = self.send_put(&path, Some(params)).await?;
175        decode_response(resp).await
176    }
177
178    /// Delete file in repository
179    pub async fn delete_file(
180        &self,
181        owner: &str,
182        repo: &str,
183        filepath: &str,
184        params: &DeleteFileParams,
185    ) -> Result<FileDeleteResponse, Error> {
186        let path = format!("/repos/{}/{}/contents/{}", owner, repo, filepath);
187        let resp = self.send_delete(&path, Some(params)).await?;
188        decode_response(resp).await
189    }
190
191    /// Fork a repository
192    pub async fn create_fork(
193        &self,
194        owner: &str,
195        repo: &str,
196        params: &CreateForkParams,
197    ) -> Result<Repository, Error> {
198        let path = format!("/repos/{}/{}/forks", owner, repo);
199        let resp = self.send_post(&path, Some(params)).await?;
200        decode_response(resp).await
201    }
202
203    /// Create a Git commit
204    pub async fn create_commit(
205        &self,
206        owner: &str,
207        repo: &str,
208        params: &CreateCommitParams,
209    ) -> Result<Commit, Error> {
210        let path = format!("/repos/{}/{}/git/commits", owner, repo);
211        let resp = self.send_post(&path, Some(params)).await?;
212        decode_response(resp).await
213    }
214
215    /// List matching references
216    pub async fn list_matching_refs(
217        &self,
218        owner: &str,
219        repo: &str,
220        r#ref: &str,
221    ) -> Result<Vec<Reference>, Error> {
222        let path = format!("/repos/{}/{}/git/matching-refs/{}", owner, repo, r#ref);
223        let resp = self.send_get(&path, None).await?;
224        decode_response(resp).await
225    }
226
227    /// Get a Git reference
228    pub async fn get_ref(&self, owner: &str, repo: &str, r#ref: &str) -> Result<Reference, Error> {
229        let path = format!("/repos/{}/{}/git/ref/{}", owner, repo, r#ref);
230        let resp = self.send_get(&path, None).await?;
231        decode_response(resp).await
232    }
233
234    /// Create a Git reference
235    pub async fn create_ref(
236        &self,
237        owner: &str,
238        repo: &str,
239        params: &CreateReferenceParams,
240    ) -> Result<Reference, Error> {
241        let path = format!("/repos/{}/{}/git/refs", owner, repo);
242        let resp = self.send_post(&path, Some(params)).await?;
243        decode_response(resp).await
244    }
245
246    /// Deletes the provided reference
247    pub async fn delete_ref(&self, owner: &str, repo: &str, r#ref: &str) -> Result<(), Error> {
248        let path = format!("/repos/{}/{}/git/refs/{}", owner, repo, r#ref);
249        let resp = self.send_delete(&path, Option::<&()>::None).await?;
250        handle_empty_response(resp).await
251    }
252
253    /// Creates new Git tree
254    pub async fn create_tree(
255        &self,
256        owner: &str,
257        repo: &str,
258        params: &CreateTreeParams,
259    ) -> Result<RepoTree, Error> {
260        let path = format!("/repos/{}/{}/git/trees", owner, repo);
261        let resp = self.send_post(&path, Some(params)).await?;
262        decode_response(resp).await
263    }
264
265    /// Get repository tree by SHA
266    pub async fn get_tree(
267        &self,
268        owner: &str,
269        repo: &str,
270        sha: &str,
271        opts: Option<&QueryOptions>,
272    ) -> Result<GitTreeResponse, Error> {
273        let path = format!("/repos/{}/{}/git/trees/{}", owner, repo, sha);
274        let resp = self.send_get(&path, opts).await?;
275        decode_response(resp).await
276    }
277
278    /// Get repository languages
279    pub async fn list_languages(
280        &self,
281        owner: &str,
282        repo: &str,
283    ) -> Result<serde_json::Value, Error> {
284        let path = format!("/repos/{}/{}/languages", owner, repo);
285        let resp = self.send_get(&path, None).await?;
286        decode_response(resp).await
287    }
288
289    /// List pull requests
290    pub async fn list_pulls(
291        &self,
292        owner: &str,
293        repo: &str,
294        opts: Option<&QueryOptions>,
295    ) -> Result<Vec<PullRequest>, Error> {
296        let path = format!("/repos/{}/{}/pulls", owner, repo);
297        let resp = self.send_get(&path, opts).await?;
298        decode_response(resp).await
299    }
300
301    /// Pull request details.
302    pub async fn get_pull(
303        &self,
304        owner: &str,
305        repo: &str,
306        pull_number: f64,
307    ) -> Result<PullRequest, Error> {
308        let path = format!("/repos/{}/{}/pulls/{}", owner, repo, pull_number);
309        let resp = self.send_get(&path, None).await?;
310        decode_response(resp).await
311    }
312
313    /// Update a pull request.
314    pub async fn update_pull(
315        &self,
316        owner: &str,
317        repo: &str,
318        pull_number: f64,
319        params: &UpdatePullRequestParams,
320    ) -> Result<PullRequest, Error> {
321        let path = format!("/repos/{}/{}/pulls/{}", owner, repo, pull_number);
322        let resp = self.send_patch(&path, Some(params)).await?;
323        decode_response(resp).await
324    }
325
326    /// Get authenticated user repositories
327    pub async fn list_for_authenticated_user(
328        &self,
329        opts: Option<&QueryOptions>,
330    ) -> Result<Vec<Repository>, Error> {
331        let path = "/user/repos";
332        let resp = self.send_get(&path, opts).await?;
333        decode_response(resp).await
334    }
335
336    /// Create repository
337    pub async fn create_for_authenticated_user(
338        &self,
339        params: &CreateRepositoryParams,
340    ) -> Result<Repository, Error> {
341        let path = "/user/repos";
342        let resp = self.send_post(&path, Some(params)).await?;
343        decode_response(resp).await
344    }
345}