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 PersonalAccessTokensService struct {
30 client *Client
31 }
32
33
34
35
36 type PersonalAccessToken struct {
37 ID int `json:"id"`
38 Name string `json:"name"`
39 Revoked bool `json:"revoked"`
40 CreatedAt *time.Time `json:"created_at"`
41 Scopes []string `json:"scopes"`
42 UserID int `json:"user_id"`
43 LastUsedAt *time.Time `json:"last_used_at,omitempty"`
44 Active bool `json:"active"`
45 ExpiresAt *ISOTime `json:"expires_at"`
46 Token string `json:"token,omitempty"`
47 }
48
49 func (p PersonalAccessToken) String() string {
50 return Stringify(p)
51 }
52
53
54
55
56
57
58 type ListPersonalAccessTokensOptions struct {
59 ListOptions
60 UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
61 }
62
63
64
65
66
67 func (s *PersonalAccessTokensService) ListPersonalAccessTokens(opt *ListPersonalAccessTokensOptions, options ...RequestOptionFunc) ([]*PersonalAccessToken, *Response, error) {
68 req, err := s.client.NewRequest(http.MethodGet, "personal_access_tokens", opt, options)
69 if err != nil {
70 return nil, nil, err
71 }
72
73 var pats []*PersonalAccessToken
74 resp, err := s.client.Do(req, &pats)
75 if err != nil {
76 return nil, resp, err
77 }
78
79 return pats, resp, nil
80 }
81
82
83
84
85
86 func (s *PersonalAccessTokensService) GetSinglePersonalAccessTokenByID(user int, options ...RequestOptionFunc) (*PersonalAccessToken, *Response, error) {
87 u := fmt.Sprintf("personal_access_tokens/%d", user)
88 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
89 if err != nil {
90 return nil, nil, err
91 }
92
93 pat := new(PersonalAccessToken)
94 resp, err := s.client.Do(req, pat)
95 if err != nil {
96 return nil, resp, err
97 }
98
99 return pat, resp, nil
100 }
101
102
103
104
105
106
107 func (s *PersonalAccessTokensService) GetSinglePersonalAccessToken(options ...RequestOptionFunc) (*PersonalAccessToken, *Response, error) {
108 u := "personal_access_tokens/self"
109 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
110 if err != nil {
111 return nil, nil, err
112 }
113
114 pat := new(PersonalAccessToken)
115 resp, err := s.client.Do(req, pat)
116 if err != nil {
117 return nil, resp, err
118 }
119
120 return pat, resp, nil
121 }
122
123
124
125
126
127
128 type RotatePersonalAccessTokenOptions struct {
129 ExpiresAt *ISOTime `url:"expires_at,omitempty" json:"expires_at,omitempty"`
130 }
131
132
133
134
135
136
137 func (s *PersonalAccessTokensService) RotatePersonalAccessToken(token int, opt *RotatePersonalAccessTokenOptions, options ...RequestOptionFunc) (*PersonalAccessToken, *Response, error) {
138 u := fmt.Sprintf("personal_access_tokens/%d/rotate", token)
139
140 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
141 if err != nil {
142 return nil, nil, err
143 }
144
145 pat := new(PersonalAccessToken)
146 resp, err := s.client.Do(req, pat)
147 if err != nil {
148 return nil, resp, err
149 }
150
151 return pat, resp, nil
152 }
153
154
155
156
157
158 func (s *PersonalAccessTokensService) RevokePersonalAccessToken(token int, options ...RequestOptionFunc) (*Response, error) {
159 u := fmt.Sprintf("personal_access_tokens/%d", token)
160
161 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
162 if err != nil {
163 return nil, err
164 }
165
166 return s.client.Do(req, nil)
167 }
168
View as plain text