1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package gitlab
18
19 import (
20 "fmt"
21 "net/http"
22 )
23
24
25
26
27
28 type ProjectMembersService struct {
29 client *Client
30 }
31
32
33
34
35
36
37 type ListProjectMembersOptions struct {
38 ListOptions
39 Query *string `url:"query,omitempty" json:"query,omitempty"`
40 UserIDs *[]int `url:"user_ids[],omitempty" json:"user_ids,omitempty"`
41 }
42
43
44
45
46
47
48
49 func (s *ProjectMembersService) ListProjectMembers(pid interface{}, opt *ListProjectMembersOptions, options ...RequestOptionFunc) ([]*ProjectMember, *Response, error) {
50 project, err := parseID(pid)
51 if err != nil {
52 return nil, nil, err
53 }
54 u := fmt.Sprintf("projects/%s/members", PathEscape(project))
55
56 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
57 if err != nil {
58 return nil, nil, err
59 }
60
61 var pm []*ProjectMember
62 resp, err := s.client.Do(req, &pm)
63 if err != nil {
64 return nil, resp, err
65 }
66
67 return pm, resp, nil
68 }
69
70
71
72
73
74
75
76 func (s *ProjectMembersService) ListAllProjectMembers(pid interface{}, opt *ListProjectMembersOptions, options ...RequestOptionFunc) ([]*ProjectMember, *Response, error) {
77 project, err := parseID(pid)
78 if err != nil {
79 return nil, nil, err
80 }
81 u := fmt.Sprintf("projects/%s/members/all", PathEscape(project))
82
83 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
84 if err != nil {
85 return nil, nil, err
86 }
87
88 var pm []*ProjectMember
89 resp, err := s.client.Do(req, &pm)
90 if err != nil {
91 return nil, resp, err
92 }
93
94 return pm, resp, nil
95 }
96
97
98
99
100
101 func (s *ProjectMembersService) GetProjectMember(pid interface{}, user int, options ...RequestOptionFunc) (*ProjectMember, *Response, error) {
102 project, err := parseID(pid)
103 if err != nil {
104 return nil, nil, err
105 }
106 u := fmt.Sprintf("projects/%s/members/%d", PathEscape(project), user)
107
108 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
109 if err != nil {
110 return nil, nil, err
111 }
112
113 pm := new(ProjectMember)
114 resp, err := s.client.Do(req, pm)
115 if err != nil {
116 return nil, resp, err
117 }
118
119 return pm, resp, nil
120 }
121
122
123
124
125
126 func (s *ProjectMembersService) GetInheritedProjectMember(pid interface{}, user int, options ...RequestOptionFunc) (*ProjectMember, *Response, error) {
127 project, err := parseID(pid)
128 if err != nil {
129 return nil, nil, err
130 }
131 u := fmt.Sprintf("projects/%s/members/all/%d", PathEscape(project), user)
132
133 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
134 if err != nil {
135 return nil, nil, err
136 }
137
138 pm := new(ProjectMember)
139 resp, err := s.client.Do(req, pm)
140 if err != nil {
141 return nil, resp, err
142 }
143
144 return pm, resp, nil
145 }
146
147
148
149
150
151 type AddProjectMemberOptions struct {
152 UserID interface{} `url:"user_id,omitempty" json:"user_id,omitempty"`
153 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
154 ExpiresAt *string `url:"expires_at,omitempty" json:"expires_at"`
155 MemberRoleID *int `url:"member_role_id,omitempty" json:"member_role_id,omitempty"`
156 }
157
158
159
160
161
162
163
164
165 func (s *ProjectMembersService) AddProjectMember(pid interface{}, opt *AddProjectMemberOptions, options ...RequestOptionFunc) (*ProjectMember, *Response, error) {
166 project, err := parseID(pid)
167 if err != nil {
168 return nil, nil, err
169 }
170 u := fmt.Sprintf("projects/%s/members", PathEscape(project))
171
172 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
173 if err != nil {
174 return nil, nil, err
175 }
176
177 pm := new(ProjectMember)
178 resp, err := s.client.Do(req, pm)
179 if err != nil {
180 return nil, resp, err
181 }
182
183 return pm, resp, nil
184 }
185
186
187
188
189
190 type EditProjectMemberOptions struct {
191 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
192 ExpiresAt *string `url:"expires_at,omitempty" json:"expires_at,omitempty"`
193 MemberRoleID *int `url:"member_role_id,omitempty" json:"member_role_id,omitempty"`
194 }
195
196
197
198
199
200 func (s *ProjectMembersService) EditProjectMember(pid interface{}, user int, opt *EditProjectMemberOptions, options ...RequestOptionFunc) (*ProjectMember, *Response, error) {
201 project, err := parseID(pid)
202 if err != nil {
203 return nil, nil, err
204 }
205 u := fmt.Sprintf("projects/%s/members/%d", PathEscape(project), user)
206
207 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
208 if err != nil {
209 return nil, nil, err
210 }
211
212 pm := new(ProjectMember)
213 resp, err := s.client.Do(req, pm)
214 if err != nil {
215 return nil, resp, err
216 }
217
218 return pm, resp, nil
219 }
220
221
222
223
224
225 func (s *ProjectMembersService) DeleteProjectMember(pid interface{}, user int, options ...RequestOptionFunc) (*Response, error) {
226 project, err := parseID(pid)
227 if err != nil {
228 return nil, err
229 }
230 u := fmt.Sprintf("projects/%s/members/%d", PathEscape(project), user)
231
232 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
233 if err != nil {
234 return nil, err
235 }
236
237 return s.client.Do(req, nil)
238 }
239
View as plain text