1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14 type Label struct {
15 ID *int64 `json:"id,omitempty"`
16 URL *string `json:"url,omitempty"`
17 Name *string `json:"name,omitempty"`
18 Color *string `json:"color,omitempty"`
19 Description *string `json:"description,omitempty"`
20 Default *bool `json:"default,omitempty"`
21 NodeID *string `json:"node_id,omitempty"`
22 }
23
24 func (l Label) String() string {
25 return Stringify(l)
26 }
27
28
29
30
31 func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*Label, *Response, error) {
32 u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
33 u, err := addOptions(u, opts)
34 if err != nil {
35 return nil, nil, err
36 }
37
38 req, err := s.client.NewRequest("GET", u, nil)
39 if err != nil {
40 return nil, nil, err
41 }
42
43 var labels []*Label
44 resp, err := s.client.Do(ctx, req, &labels)
45 if err != nil {
46 return nil, resp, err
47 }
48
49 return labels, resp, nil
50 }
51
52
53
54
55 func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string, name string) (*Label, *Response, error) {
56 u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
57 req, err := s.client.NewRequest("GET", u, nil)
58 if err != nil {
59 return nil, nil, err
60 }
61
62 label := new(Label)
63 resp, err := s.client.Do(ctx, req, label)
64 if err != nil {
65 return nil, resp, err
66 }
67
68 return label, resp, nil
69 }
70
71
72
73
74 func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo string, label *Label) (*Label, *Response, error) {
75 u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
76 req, err := s.client.NewRequest("POST", u, label)
77 if err != nil {
78 return nil, nil, err
79 }
80
81 l := new(Label)
82 resp, err := s.client.Do(ctx, req, l)
83 if err != nil {
84 return nil, resp, err
85 }
86
87 return l, resp, nil
88 }
89
90
91
92
93 func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string, name string, label *Label) (*Label, *Response, error) {
94 u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
95 req, err := s.client.NewRequest("PATCH", u, label)
96 if err != nil {
97 return nil, nil, err
98 }
99
100 l := new(Label)
101 resp, err := s.client.Do(ctx, req, l)
102 if err != nil {
103 return nil, resp, err
104 }
105
106 return l, resp, nil
107 }
108
109
110
111
112 func (s *IssuesService) DeleteLabel(ctx context.Context, owner string, repo string, name string) (*Response, error) {
113 u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
114 req, err := s.client.NewRequest("DELETE", u, nil)
115 if err != nil {
116 return nil, err
117 }
118 return s.client.Do(ctx, req, nil)
119 }
120
121
122
123
124 func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) {
125 u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
126 u, err := addOptions(u, opts)
127 if err != nil {
128 return nil, nil, err
129 }
130
131 req, err := s.client.NewRequest("GET", u, nil)
132 if err != nil {
133 return nil, nil, err
134 }
135
136 var labels []*Label
137 resp, err := s.client.Do(ctx, req, &labels)
138 if err != nil {
139 return nil, resp, err
140 }
141
142 return labels, resp, nil
143 }
144
145
146
147
148 func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
149 u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
150 req, err := s.client.NewRequest("POST", u, labels)
151 if err != nil {
152 return nil, nil, err
153 }
154
155 var l []*Label
156 resp, err := s.client.Do(ctx, req, &l)
157 if err != nil {
158 return nil, resp, err
159 }
160
161 return l, resp, nil
162 }
163
164
165
166
167 func (s *IssuesService) RemoveLabelForIssue(ctx context.Context, owner string, repo string, number int, label string) (*Response, error) {
168 u := fmt.Sprintf("repos/%v/%v/issues/%d/labels/%v", owner, repo, number, label)
169 req, err := s.client.NewRequest("DELETE", u, nil)
170 if err != nil {
171 return nil, err
172 }
173
174 return s.client.Do(ctx, req, nil)
175 }
176
177
178
179
180 func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
181 u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
182 req, err := s.client.NewRequest("PUT", u, labels)
183 if err != nil {
184 return nil, nil, err
185 }
186
187 var l []*Label
188 resp, err := s.client.Do(ctx, req, &l)
189 if err != nil {
190 return nil, resp, err
191 }
192
193 return l, resp, nil
194 }
195
196
197
198
199 func (s *IssuesService) RemoveLabelsForIssue(ctx context.Context, owner string, repo string, number int) (*Response, error) {
200 u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
201 req, err := s.client.NewRequest("DELETE", u, nil)
202 if err != nil {
203 return nil, err
204 }
205
206 return s.client.Do(ctx, req, nil)
207 }
208
209
210
211
212 func (s *IssuesService) ListLabelsForMilestone(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) {
213 u := fmt.Sprintf("repos/%v/%v/milestones/%d/labels", owner, repo, number)
214 u, err := addOptions(u, opts)
215 if err != nil {
216 return nil, nil, err
217 }
218
219 req, err := s.client.NewRequest("GET", u, nil)
220 if err != nil {
221 return nil, nil, err
222 }
223
224 var labels []*Label
225 resp, err := s.client.Do(ctx, req, &labels)
226 if err != nil {
227 return nil, resp, err
228 }
229
230 return labels, resp, nil
231 }
232
View as plain text