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
29 type GroupProtectedEnvironmentsService struct {
30 client *Client
31 }
32
33
34
35
36
37 type GroupProtectedEnvironment struct {
38 Name string `json:"name"`
39 DeployAccessLevels []*GroupEnvironmentAccessDescription `json:"deploy_access_levels"`
40 RequiredApprovalCount int `json:"required_approval_count"`
41 ApprovalRules []*GroupEnvironmentApprovalRule `json:"approval_rules"`
42 }
43
44
45
46
47
48
49 type GroupEnvironmentAccessDescription struct {
50 ID int `json:"id"`
51 AccessLevel AccessLevelValue `json:"access_level"`
52 AccessLevelDescription string `json:"access_level_description"`
53 UserID int `json:"user_id"`
54 GroupID int `json:"group_id"`
55 GroupInheritanceType int `json:"group_inheritance_type"`
56 }
57
58
59
60
61
62
63 type GroupEnvironmentApprovalRule struct {
64 ID int `json:"id"`
65 UserID int `json:"user_id"`
66 GroupID int `json:"group_id"`
67 AccessLevel AccessLevelValue `json:"access_level"`
68 AccessLevelDescription string `json:"access_level_description"`
69 RequiredApprovalCount int `json:"required_approvals"`
70 GroupInheritanceType int `json:"group_inheritance_type"`
71 }
72
73
74
75
76
77
78 type ListGroupProtectedEnvironmentsOptions ListOptions
79
80
81
82
83
84
85 func (s *GroupProtectedEnvironmentsService) ListGroupProtectedEnvironments(gid interface{}, opt *ListGroupProtectedEnvironmentsOptions, options ...RequestOptionFunc) ([]*GroupProtectedEnvironment, *Response, error) {
86 group, err := parseID(gid)
87 if err != nil {
88 return nil, nil, err
89 }
90 u := fmt.Sprintf("groups/%s/protected_environments", PathEscape(group))
91
92 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
93 if err != nil {
94 return nil, nil, err
95 }
96
97 var pes []*GroupProtectedEnvironment
98 resp, err := s.client.Do(req, &pes)
99 if err != nil {
100 return nil, resp, err
101 }
102
103 return pes, resp, nil
104 }
105
106
107
108
109
110
111 func (s *GroupProtectedEnvironmentsService) GetGroupProtectedEnvironment(gid interface{}, environment string, options ...RequestOptionFunc) (*GroupProtectedEnvironment, *Response, error) {
112 group, err := parseID(gid)
113 if err != nil {
114 return nil, nil, err
115 }
116 u := fmt.Sprintf("groups/%s/protected_environments/%s", PathEscape(group), environment)
117
118 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
119 if err != nil {
120 return nil, nil, err
121 }
122
123 pe := new(GroupProtectedEnvironment)
124 resp, err := s.client.Do(req, pe)
125 if err != nil {
126 return nil, resp, err
127 }
128
129 return pe, resp, nil
130 }
131
132
133
134
135
136
137 type ProtectGroupEnvironmentOptions struct {
138 Name *string `url:"name,omitempty" json:"name,omitempty"`
139 DeployAccessLevels *[]*GroupEnvironmentAccessOptions `url:"deploy_access_levels,omitempty" json:"deploy_access_levels,omitempty"`
140 RequiredApprovalCount *int `url:"required_approval_count,omitempty" json:"required_approval_count,omitempty"`
141 ApprovalRules *[]*GroupEnvironmentApprovalRuleOptions `url:"approval_rules,omitempty" json:"approval_rules,omitempty"`
142 }
143
144
145
146
147
148
149 type GroupEnvironmentAccessOptions struct {
150 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
151 UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
152 GroupID *int `url:"group_id,omitempty" json:"group_id,omitempty"`
153 GroupInheritanceType *int `url:"group_inheritance_type,omitempty" json:"group_inheritance_type,omitempty"`
154 }
155
156
157
158
159
160
161 type GroupEnvironmentApprovalRuleOptions struct {
162 UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
163 GroupID *int `url:"group_id,omitempty" json:"group_id,omitempty"`
164 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
165 AccessLevelDescription *string `url:"access_level_description,omitempty" json:"access_level_description,omitempty"`
166 RequiredApprovalCount *int `url:"required_approvals,omitempty" json:"required_approvals,omitempty"`
167 GroupInheritanceType *int `url:"group_inheritance_type,omitempty" json:"group_inheritance_type,omitempty"`
168 }
169
170
171
172
173
174 func (s *GroupProtectedEnvironmentsService) ProtectGroupEnvironment(gid interface{}, opt *ProtectGroupEnvironmentOptions, options ...RequestOptionFunc) (*GroupProtectedEnvironment, *Response, error) {
175 group, err := parseID(gid)
176 if err != nil {
177 return nil, nil, err
178 }
179 u := fmt.Sprintf("groups/%s/protected_environments", PathEscape(group))
180
181 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
182 if err != nil {
183 return nil, nil, err
184 }
185
186 pe := new(GroupProtectedEnvironment)
187 resp, err := s.client.Do(req, pe)
188 if err != nil {
189 return nil, resp, err
190 }
191
192 return pe, resp, nil
193 }
194
195
196
197
198
199
200 type UpdateGroupProtectedEnvironmentOptions struct {
201 Name *string `url:"name,omitempty" json:"name,omitempty"`
202 DeployAccessLevels *[]*UpdateGroupEnvironmentAccessOptions `url:"deploy_access_levels,omitempty" json:"deploy_access_levels,omitempty"`
203 RequiredApprovalCount *int `url:"required_approval_count,omitempty" json:"required_approval_count,omitempty"`
204 ApprovalRules *[]*UpdateGroupEnvironmentApprovalRuleOptions `url:"approval_rules,omitempty" json:"approval_rules,omitempty"`
205 }
206
207
208
209
210
211
212 type UpdateGroupEnvironmentAccessOptions struct {
213 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
214 ID *int `url:"id,omitempty" json:"id,omitempty"`
215 UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
216 GroupID *int `url:"group_id,omitempty" json:"group_id,omitempty"`
217 GroupInheritanceType *int `url:"group_inheritance_type,omitempty" json:"group_inheritance_type,omitempty"`
218 Destroy *bool `url:"_destroy,omitempty" json:"_destroy,omitempty"`
219 }
220
221
222
223
224
225
226 type UpdateGroupEnvironmentApprovalRuleOptions struct {
227 ID *int `url:"id,omitempty" json:"id,omitempty"`
228 UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
229 GroupID *int `url:"group_id,omitempty" json:"group_id,omitempty"`
230 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
231 AccessLevelDescription *string `url:"access_level_description,omitempty" json:"access_level_description,omitempty"`
232 RequiredApprovalCount *int `url:"required_approvals,omitempty" json:"required_approvals,omitempty"`
233 GroupInheritanceType *int `url:"group_inheritance_type,omitempty" json:"group_inheritance_type,omitempty"`
234 Destroy *bool `url:"_destroy,omitempty" json:"_destroy,omitempty"`
235 }
236
237
238
239
240
241
242 func (s *GroupProtectedEnvironmentsService) UpdateGroupProtectedEnvironment(gid interface{}, environment string, opt *UpdateGroupProtectedEnvironmentOptions, options ...RequestOptionFunc) (*GroupProtectedEnvironment, *Response, error) {
243 group, err := parseID(gid)
244 if err != nil {
245 return nil, nil, err
246 }
247 u := fmt.Sprintf("groups/%s/protected_environments/%s", PathEscape(group), environment)
248
249 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
250 if err != nil {
251 return nil, nil, err
252 }
253
254 pe := new(GroupProtectedEnvironment)
255 resp, err := s.client.Do(req, pe)
256 if err != nil {
257 return nil, resp, err
258 }
259
260 return pe, resp, nil
261 }
262
263
264
265
266
267
268 func (s *GroupProtectedEnvironmentsService) UnprotectGroupEnvironment(gid interface{}, environment string, options ...RequestOptionFunc) (*Response, error) {
269 group, err := parseID(gid)
270 if err != nil {
271 return nil, err
272 }
273 u := fmt.Sprintf("groups/%s/protected_environments/%s", PathEscape(group), environment)
274
275 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
276 if err != nil {
277 return nil, err
278 }
279
280 return s.client.Do(req, nil)
281 }
282
View as plain text