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 "time"
23 )
24
25
26
27
28
29 type GroupAccessTokensService struct {
30 client *Client
31 }
32
33
34
35
36 type GroupAccessToken struct {
37 ID int `json:"id"`
38 UserID int `json:"user_id"`
39 Name string `json:"name"`
40 Scopes []string `json:"scopes"`
41 CreatedAt *time.Time `json:"created_at"`
42 ExpiresAt *ISOTime `json:"expires_at"`
43 LastUsedAt *time.Time `json:"last_used_at"`
44 Active bool `json:"active"`
45 Revoked bool `json:"revoked"`
46 Token string `json:"token"`
47 AccessLevel AccessLevelValue `json:"access_level"`
48 }
49
50 func (v GroupAccessToken) String() string {
51 return Stringify(v)
52 }
53
54
55
56
57
58
59 type ListGroupAccessTokensOptions ListOptions
60
61
62
63
64
65 func (s *GroupAccessTokensService) ListGroupAccessTokens(gid interface{}, opt *ListGroupAccessTokensOptions, options ...RequestOptionFunc) ([]*GroupAccessToken, *Response, error) {
66 groups, err := parseID(gid)
67 if err != nil {
68 return nil, nil, err
69 }
70 u := fmt.Sprintf("groups/%s/access_tokens", PathEscape(groups))
71
72 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
73 if err != nil {
74 return nil, nil, err
75 }
76
77 var gats []*GroupAccessToken
78 resp, err := s.client.Do(req, &gats)
79 if err != nil {
80 return nil, resp, err
81 }
82
83 return gats, resp, nil
84 }
85
86
87
88
89
90 func (s *GroupAccessTokensService) GetGroupAccessToken(gid interface{}, id int, options ...RequestOptionFunc) (*GroupAccessToken, *Response, error) {
91 groups, err := parseID(gid)
92 if err != nil {
93 return nil, nil, err
94 }
95 u := fmt.Sprintf("groups/%s/access_tokens/%d", PathEscape(groups), id)
96
97 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
98 if err != nil {
99 return nil, nil, err
100 }
101
102 gat := new(GroupAccessToken)
103 resp, err := s.client.Do(req, &gat)
104 if err != nil {
105 return nil, resp, err
106 }
107
108 return gat, resp, nil
109 }
110
111
112
113
114
115
116 type CreateGroupAccessTokenOptions struct {
117 Name *string `url:"name,omitempty" json:"name,omitempty"`
118 Scopes *[]string `url:"scopes,omitempty" json:"scopes,omitempty"`
119 AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
120 ExpiresAt *ISOTime `url:"expires_at,omitempty" json:"expires_at,omitempty"`
121 }
122
123
124
125
126
127 func (s *GroupAccessTokensService) CreateGroupAccessToken(gid interface{}, opt *CreateGroupAccessTokenOptions, options ...RequestOptionFunc) (*GroupAccessToken, *Response, error) {
128 groups, err := parseID(gid)
129 if err != nil {
130 return nil, nil, err
131 }
132 u := fmt.Sprintf("groups/%s/access_tokens", PathEscape(groups))
133
134 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
135 if err != nil {
136 return nil, nil, err
137 }
138
139 pat := new(GroupAccessToken)
140 resp, err := s.client.Do(req, pat)
141 if err != nil {
142 return nil, resp, err
143 }
144
145 return pat, resp, nil
146 }
147
148
149
150
151
152
153 type RotateGroupAccessTokenOptions struct {
154 ExpiresAt *ISOTime `url:"expires_at,omitempty" json:"expires_at,omitempty"`
155 }
156
157
158
159
160
161
162 func (s *GroupAccessTokensService) RotateGroupAccessToken(gid interface{}, id int, opt *RotateGroupAccessTokenOptions, options ...RequestOptionFunc) (*GroupAccessToken, *Response, error) {
163 groups, err := parseID(gid)
164 if err != nil {
165 return nil, nil, err
166 }
167 u := fmt.Sprintf("groups/%s/access_tokens/%d/rotate", PathEscape(groups), id)
168 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
169 if err != nil {
170 return nil, nil, err
171 }
172
173 gat := new(GroupAccessToken)
174 resp, err := s.client.Do(req, gat)
175 if err != nil {
176 return nil, resp, err
177 }
178
179 return gat, resp, nil
180 }
181
182
183
184
185
186 func (s *GroupAccessTokensService) RevokeGroupAccessToken(gid interface{}, id int, options ...RequestOptionFunc) (*Response, error) {
187 groups, err := parseID(gid)
188 if err != nil {
189 return nil, err
190 }
191 u := fmt.Sprintf("groups/%s/access_tokens/%d", PathEscape(groups), id)
192
193 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
194 if err != nil {
195 return nil, err
196 }
197
198 return s.client.Do(req, nil)
199 }
200
View as plain text