1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14 type RunnerApplicationDownload struct {
15 OS *string `json:"os,omitempty"`
16 Architecture *string `json:"architecture,omitempty"`
17 DownloadURL *string `json:"download_url,omitempty"`
18 Filename *string `json:"filename,omitempty"`
19 TempDownloadToken *string `json:"temp_download_token,omitempty"`
20 SHA256Checksum *string `json:"sha256_checksum,omitempty"`
21 }
22
23
24 type ActionsEnabledOnOrgRepos struct {
25 TotalCount int `json:"total_count"`
26 Repositories []*Repository `json:"repositories"`
27 }
28
29
30
31
32 func (s *ActionsService) ListRunnerApplicationDownloads(ctx context.Context, owner, repo string) ([]*RunnerApplicationDownload, *Response, error) {
33 u := fmt.Sprintf("repos/%v/%v/actions/runners/downloads", owner, repo)
34 req, err := s.client.NewRequest("GET", u, nil)
35 if err != nil {
36 return nil, nil, err
37 }
38
39 var rads []*RunnerApplicationDownload
40 resp, err := s.client.Do(ctx, req, &rads)
41 if err != nil {
42 return nil, resp, err
43 }
44
45 return rads, resp, nil
46 }
47
48
49 type RegistrationToken struct {
50 Token *string `json:"token,omitempty"`
51 ExpiresAt *Timestamp `json:"expires_at,omitempty"`
52 }
53
54
55
56
57 func (s *ActionsService) CreateRegistrationToken(ctx context.Context, owner, repo string) (*RegistrationToken, *Response, error) {
58 u := fmt.Sprintf("repos/%v/%v/actions/runners/registration-token", owner, repo)
59
60 req, err := s.client.NewRequest("POST", u, nil)
61 if err != nil {
62 return nil, nil, err
63 }
64
65 registrationToken := new(RegistrationToken)
66 resp, err := s.client.Do(ctx, req, registrationToken)
67 if err != nil {
68 return nil, resp, err
69 }
70
71 return registrationToken, resp, nil
72 }
73
74
75 type Runner struct {
76 ID *int64 `json:"id,omitempty"`
77 Name *string `json:"name,omitempty"`
78 OS *string `json:"os,omitempty"`
79 Status *string `json:"status,omitempty"`
80 Busy *bool `json:"busy,omitempty"`
81 Labels []*RunnerLabels `json:"labels,omitempty"`
82 }
83
84
85 type RunnerLabels struct {
86 ID *int64 `json:"id,omitempty"`
87 Name *string `json:"name,omitempty"`
88 Type *string `json:"type,omitempty"`
89 }
90
91
92 type Runners struct {
93 TotalCount int `json:"total_count"`
94 Runners []*Runner `json:"runners"`
95 }
96
97
98
99
100 func (s *ActionsService) ListRunners(ctx context.Context, owner, repo string, opts *ListOptions) (*Runners, *Response, error) {
101 u := fmt.Sprintf("repos/%v/%v/actions/runners", owner, repo)
102 u, err := addOptions(u, opts)
103 if err != nil {
104 return nil, nil, err
105 }
106
107 req, err := s.client.NewRequest("GET", u, nil)
108 if err != nil {
109 return nil, nil, err
110 }
111
112 runners := &Runners{}
113 resp, err := s.client.Do(ctx, req, &runners)
114 if err != nil {
115 return nil, resp, err
116 }
117
118 return runners, resp, nil
119 }
120
121
122
123
124 func (s *ActionsService) GetRunner(ctx context.Context, owner, repo string, runnerID int64) (*Runner, *Response, error) {
125 u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID)
126 req, err := s.client.NewRequest("GET", u, nil)
127 if err != nil {
128 return nil, nil, err
129 }
130
131 runner := new(Runner)
132 resp, err := s.client.Do(ctx, req, runner)
133 if err != nil {
134 return nil, resp, err
135 }
136
137 return runner, resp, nil
138 }
139
140
141 type RemoveToken struct {
142 Token *string `json:"token,omitempty"`
143 ExpiresAt *Timestamp `json:"expires_at,omitempty"`
144 }
145
146
147
148
149 func (s *ActionsService) CreateRemoveToken(ctx context.Context, owner, repo string) (*RemoveToken, *Response, error) {
150 u := fmt.Sprintf("repos/%v/%v/actions/runners/remove-token", owner, repo)
151
152 req, err := s.client.NewRequest("POST", u, nil)
153 if err != nil {
154 return nil, nil, err
155 }
156
157 removeToken := new(RemoveToken)
158 resp, err := s.client.Do(ctx, req, removeToken)
159 if err != nil {
160 return nil, resp, err
161 }
162
163 return removeToken, resp, nil
164 }
165
166
167
168
169 func (s *ActionsService) RemoveRunner(ctx context.Context, owner, repo string, runnerID int64) (*Response, error) {
170 u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID)
171
172 req, err := s.client.NewRequest("DELETE", u, nil)
173 if err != nil {
174 return nil, err
175 }
176
177 return s.client.Do(ctx, req, nil)
178 }
179
180
181
182
183 func (s *ActionsService) ListOrganizationRunnerApplicationDownloads(ctx context.Context, owner string) ([]*RunnerApplicationDownload, *Response, error) {
184 u := fmt.Sprintf("orgs/%v/actions/runners/downloads", owner)
185 req, err := s.client.NewRequest("GET", u, nil)
186 if err != nil {
187 return nil, nil, err
188 }
189
190 var rads []*RunnerApplicationDownload
191 resp, err := s.client.Do(ctx, req, &rads)
192 if err != nil {
193 return nil, resp, err
194 }
195
196 return rads, resp, nil
197 }
198
199
200
201
202 func (s *ActionsService) CreateOrganizationRegistrationToken(ctx context.Context, owner string) (*RegistrationToken, *Response, error) {
203 u := fmt.Sprintf("orgs/%v/actions/runners/registration-token", owner)
204
205 req, err := s.client.NewRequest("POST", u, nil)
206 if err != nil {
207 return nil, nil, err
208 }
209
210 registrationToken := new(RegistrationToken)
211 resp, err := s.client.Do(ctx, req, registrationToken)
212 if err != nil {
213 return nil, resp, err
214 }
215
216 return registrationToken, resp, nil
217 }
218
219
220
221
222 func (s *ActionsService) ListOrganizationRunners(ctx context.Context, owner string, opts *ListOptions) (*Runners, *Response, error) {
223 u := fmt.Sprintf("orgs/%v/actions/runners", owner)
224 u, err := addOptions(u, opts)
225 if err != nil {
226 return nil, nil, err
227 }
228
229 req, err := s.client.NewRequest("GET", u, nil)
230 if err != nil {
231 return nil, nil, err
232 }
233
234 runners := &Runners{}
235 resp, err := s.client.Do(ctx, req, &runners)
236 if err != nil {
237 return nil, resp, err
238 }
239
240 return runners, resp, nil
241 }
242
243
244
245
246 func (s *ActionsService) ListEnabledReposInOrg(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnOrgRepos, *Response, error) {
247 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner)
248 u, err := addOptions(u, opts)
249 if err != nil {
250 return nil, nil, err
251 }
252
253 req, err := s.client.NewRequest("GET", u, nil)
254 if err != nil {
255 return nil, nil, err
256 }
257
258 repos := &ActionsEnabledOnOrgRepos{}
259 resp, err := s.client.Do(ctx, req, repos)
260 if err != nil {
261 return nil, resp, err
262 }
263
264 return repos, resp, nil
265 }
266
267
268
269
270 func (s *ActionsService) SetEnabledReposInOrg(ctx context.Context, owner string, repositoryIDs []int64) (*Response, error) {
271 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner)
272
273 req, err := s.client.NewRequest("PUT", u, struct {
274 IDs []int64 `json:"selected_repository_ids"`
275 }{IDs: repositoryIDs})
276 if err != nil {
277 return nil, err
278 }
279
280 resp, err := s.client.Do(ctx, req, nil)
281 if err != nil {
282 return resp, err
283 }
284
285 return resp, nil
286 }
287
288
289
290
291 func (s *ActionsService) AddEnabledReposInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) {
292 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID)
293
294 req, err := s.client.NewRequest("PUT", u, nil)
295 if err != nil {
296 return nil, err
297 }
298
299 resp, err := s.client.Do(ctx, req, nil)
300 if err != nil {
301 return resp, err
302 }
303
304 return resp, nil
305 }
306
307
308
309
310 func (s *ActionsService) RemoveEnabledRepoInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) {
311 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID)
312
313 req, err := s.client.NewRequest("DELETE", u, nil)
314 if err != nil {
315 return nil, err
316 }
317
318 resp, err := s.client.Do(ctx, req, nil)
319 if err != nil {
320 return resp, err
321 }
322
323 return resp, nil
324 }
325
326
327
328
329 func (s *ActionsService) GetOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Runner, *Response, error) {
330 u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID)
331 req, err := s.client.NewRequest("GET", u, nil)
332 if err != nil {
333 return nil, nil, err
334 }
335
336 runner := new(Runner)
337 resp, err := s.client.Do(ctx, req, runner)
338 if err != nil {
339 return nil, resp, err
340 }
341
342 return runner, resp, nil
343 }
344
345
346
347
348 func (s *ActionsService) CreateOrganizationRemoveToken(ctx context.Context, owner string) (*RemoveToken, *Response, error) {
349 u := fmt.Sprintf("orgs/%v/actions/runners/remove-token", owner)
350
351 req, err := s.client.NewRequest("POST", u, nil)
352 if err != nil {
353 return nil, nil, err
354 }
355
356 removeToken := new(RemoveToken)
357 resp, err := s.client.Do(ctx, req, removeToken)
358 if err != nil {
359 return nil, resp, err
360 }
361
362 return removeToken, resp, nil
363 }
364
365
366
367
368 func (s *ActionsService) RemoveOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Response, error) {
369 u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID)
370
371 req, err := s.client.NewRequest("DELETE", u, nil)
372 if err != nil {
373 return nil, err
374 }
375
376 return s.client.Do(ctx, req, nil)
377 }
378
View as plain text