ephemeris_forge_github/api/operations/
access.rs1use ephemeris_forge::{RepoRef, UserName};
2
3use crate::Permission;
4use crate::api::error::ForgeError;
5use crate::api::model::{Collaborator, Invitation, Membership, OwnerKind, Team};
6
7pub trait AccessApi {
9 fn add_collaborator(
11 &self,
12 repository: &RepoRef,
13 user: &UserName,
14 permission: &Permission,
15 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
16
17 fn add_team(
19 &self,
20 repository: &RepoRef,
21 slug: &str,
22 permission: &Permission,
23 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
24
25 fn cancel_invitation(
27 &self,
28 repository: &RepoRef,
29 id: u64,
30 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
31
32 fn collaborators(
34 &self,
35 repository: &RepoRef,
36 ) -> impl Future<Output = Result<Vec<Collaborator>, ForgeError>> + Send;
37
38 fn current_user(&self) -> impl Future<Output = Result<String, ForgeError>> + Send;
40
41 fn invitations(
43 &self,
44 repository: &RepoRef,
45 ) -> impl Future<Output = Result<Vec<Invitation>, ForgeError>> + Send;
46
47 fn organization_teams(
49 &self,
50 organization: &str,
51 ) -> impl Future<Output = Result<Vec<Team>, ForgeError>> + Send;
52
53 fn owner_kind(&self, owner: &str)
55 -> impl Future<Output = Result<OwnerKind, ForgeError>> + Send;
56
57 fn remove_collaborator(
59 &self,
60 repository: &RepoRef,
61 user: &UserName,
62 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
63
64 fn remove_team(
66 &self,
67 repository: &RepoRef,
68 slug: &str,
69 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
70
71 fn teams(
73 &self,
74 repository: &RepoRef,
75 ) -> impl Future<Output = Result<Vec<Team>, ForgeError>> + Send;
76
77 fn update_invitation(
79 &self,
80 repository: &RepoRef,
81 id: u64,
82 permission: &Permission,
83 ) -> impl Future<Output = Result<(), ForgeError>> + Send;
84
85 fn user_teams(&self) -> impl Future<Output = Result<Vec<Membership>, ForgeError>> + Send;
87}