1
2
3
4
5
6
7
8
9
10
11
12
13
14 package gitlab
15
16 import (
17 "fmt"
18 "net/http"
19 )
20
21
22
23
24
25 type JobTokenScopeService struct {
26 client *Client
27 }
28
29
30
31
32 type JobTokenAccessSettings struct {
33 InboundEnabled bool `json:"inbound_enabled"`
34 OutboundEnabled bool `json:"outbound_enabled"`
35 }
36
37
38
39
40
41 func (j *JobTokenScopeService) GetProjectJobTokenAccessSettings(pid interface{}, options ...RequestOptionFunc) (*JobTokenAccessSettings, *Response, error) {
42 project, err := parseID(pid)
43 if err != nil {
44 return nil, nil, err
45 }
46 u := fmt.Sprintf(`projects/%s/job_token_scope`, PathEscape(project))
47
48 req, err := j.client.NewRequest(http.MethodGet, u, nil, options)
49 if err != nil {
50 return nil, nil, err
51 }
52
53 jt := new(JobTokenAccessSettings)
54 resp, err := j.client.Do(req, jt)
55 if err != nil {
56 return nil, resp, err
57 }
58
59 return jt, resp, err
60 }
61
62
63
64
65
66
67 type PatchProjectJobTokenAccessSettingsOptions struct {
68 Enabled bool `json:"enabled"`
69 }
70
71
72
73
74
75 func (j *JobTokenScopeService) PatchProjectJobTokenAccessSettings(pid interface{}, opt *PatchProjectJobTokenAccessSettingsOptions, options ...RequestOptionFunc) (*Response, error) {
76 project, err := parseID(pid)
77 if err != nil {
78 return nil, err
79 }
80 u := fmt.Sprintf(`projects/%s/job_token_scope`, PathEscape(project))
81
82 req, err := j.client.NewRequest(http.MethodPatch, u, opt, options)
83 if err != nil {
84 return nil, err
85 }
86
87 return j.client.Do(req, nil)
88 }
89
90
91
92
93 type JobTokenInboundAllowItem struct {
94 SourceProjectID int `json:"source_project_id"`
95 TargetProjectID int `json:"target_project_id"`
96 }
97
98
99
100
101
102
103 type GetJobTokenInboundAllowListOptions struct {
104 ListOptions
105 }
106
107
108
109
110
111
112 func (j *JobTokenScopeService) GetProjectJobTokenInboundAllowList(pid interface{}, opt *GetJobTokenInboundAllowListOptions, options ...RequestOptionFunc) ([]*Project, *Response, error) {
113 project, err := parseID(pid)
114 if err != nil {
115 return nil, nil, err
116 }
117 u := fmt.Sprintf(`projects/%s/job_token_scope/allowlist`, PathEscape(project))
118
119 req, err := j.client.NewRequest(http.MethodGet, u, opt, options)
120 if err != nil {
121 return nil, nil, err
122 }
123
124 var ps []*Project
125 resp, err := j.client.Do(req, &ps)
126 if err != nil {
127 return nil, resp, err
128 }
129
130 return ps, resp, nil
131 }
132
133
134
135
136
137
138 type JobTokenInboundAllowOptions struct {
139 TargetProjectID *int `url:"target_project_id,omitempty" json:"target_project_id,omitempty"`
140 }
141
142
143
144
145
146
147 func (j *JobTokenScopeService) AddProjectToJobScopeAllowList(pid interface{}, opt *JobTokenInboundAllowOptions, options ...RequestOptionFunc) (*JobTokenInboundAllowItem, *Response, error) {
148 project, err := parseID(pid)
149 if err != nil {
150 return nil, nil, err
151 }
152 u := fmt.Sprintf(`projects/%s/job_token_scope/allowlist`, PathEscape(project))
153
154 req, err := j.client.NewRequest(http.MethodPost, u, opt, options)
155 if err != nil {
156 return nil, nil, err
157 }
158
159 jt := new(JobTokenInboundAllowItem)
160 resp, err := j.client.Do(req, jt)
161 if err != nil {
162 return nil, resp, err
163 }
164
165 return jt, resp, nil
166 }
167
168
169
170
171
172
173 func (j *JobTokenScopeService) RemoveProjectFromJobScopeAllowList(pid interface{}, targetProject int, options ...RequestOptionFunc) (*Response, error) {
174 project, err := parseID(pid)
175 if err != nil {
176 return nil, err
177 }
178 u := fmt.Sprintf(`projects/%s/job_token_scope/allowlist/%d`, PathEscape(project), targetProject)
179
180 req, err := j.client.NewRequest(http.MethodDelete, u, nil, options)
181 if err != nil {
182 return nil, err
183 }
184
185 return j.client.Do(req, nil)
186 }
187
188
189
190
191 type JobTokenAllowlistItem struct {
192 SourceProjectID int `json:"source_project_id"`
193 TargetGroupID int `json:"target_group_id"`
194 }
195
196
197
198
199
200
201 type GetJobTokenAllowlistGroupsOptions struct {
202 ListOptions
203 }
204
205
206
207
208
209
210 func (j *JobTokenScopeService) GetJobTokenAllowlistGroups(pid interface{}, opt *GetJobTokenAllowlistGroupsOptions, options ...RequestOptionFunc) ([]*Group, *Response, error) {
211 project, err := parseID(pid)
212 if err != nil {
213 return nil, nil, err
214 }
215 u := fmt.Sprintf(`projects/%s/job_token_scope/groups_allowlist`, PathEscape(project))
216
217 req, err := j.client.NewRequest(http.MethodGet, u, opt, options)
218 if err != nil {
219 return nil, nil, err
220 }
221
222 var ps []*Group
223 resp, err := j.client.Do(req, &ps)
224 if err != nil {
225 return nil, resp, err
226 }
227
228 return ps, resp, nil
229 }
230
231
232
233
234
235
236 type AddGroupToJobTokenAllowlistOptions struct {
237 TargetGroupID *int `url:"target_group_id,omitempty" json:"target_group_id,omitempty"`
238 }
239
240
241
242
243
244
245 func (j *JobTokenScopeService) AddGroupToJobTokenAllowlist(pid interface{}, opt *AddGroupToJobTokenAllowlistOptions, options ...RequestOptionFunc) (*JobTokenAllowlistItem, *Response, error) {
246 project, err := parseID(pid)
247 if err != nil {
248 return nil, nil, err
249 }
250 u := fmt.Sprintf(`projects/%s/job_token_scope/groups_allowlist`, PathEscape(project))
251
252 req, err := j.client.NewRequest(http.MethodPost, u, opt, options)
253 if err != nil {
254 return nil, nil, err
255 }
256
257 jt := new(JobTokenAllowlistItem)
258 resp, err := j.client.Do(req, jt)
259 if err != nil {
260 return nil, resp, err
261 }
262
263 return jt, resp, nil
264 }
265
266
267
268
269
270
271 func (j *JobTokenScopeService) RemoveGroupFromJobTokenAllowlist(pid interface{}, targetGroup int, options ...RequestOptionFunc) (*Response, error) {
272 project, err := parseID(pid)
273 if err != nil {
274 return nil, err
275 }
276 u := fmt.Sprintf(`projects/%s/job_token_scope/groups_allowlist/%d`, PathEscape(project), targetGroup)
277
278 req, err := j.client.NewRequest(http.MethodDelete, u, nil, options)
279 if err != nil {
280 return nil, err
281 }
282
283 return j.client.Do(req, nil)
284 }
285
View as plain text