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 )
23
24
25
26
27
28 type GroupLabelsService struct {
29 client *Client
30 }
31
32
33
34
35 type GroupLabel Label
36
37 func (l GroupLabel) String() string {
38 return Stringify(l)
39 }
40
41
42
43
44 type ListGroupLabelsOptions struct {
45 ListOptions
46 WithCounts *bool `url:"with_counts,omitempty" json:"with_counts,omitempty"`
47 IncludeAncestorGroups *bool `url:"include_ancestor_groups,omitempty" json:"include_ancestor_groups,omitempty"`
48 IncludeDescendantGrouops *bool `url:"include_descendant_groups,omitempty" json:"include_descendant_groups,omitempty"`
49 OnlyGroupLabels *bool `url:"only_group_labels,omitempty" json:"only_group_labels,omitempty"`
50 Search *string `url:"search,omitempty" json:"search,omitempty"`
51 }
52
53
54
55
56
57 func (s *GroupLabelsService) ListGroupLabels(gid interface{}, opt *ListGroupLabelsOptions, options ...RequestOptionFunc) ([]*GroupLabel, *Response, error) {
58 group, err := parseID(gid)
59 if err != nil {
60 return nil, nil, err
61 }
62 u := fmt.Sprintf("groups/%s/labels", PathEscape(group))
63
64 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
65 if err != nil {
66 return nil, nil, err
67 }
68
69 var l []*GroupLabel
70 resp, err := s.client.Do(req, &l)
71 if err != nil {
72 return nil, resp, err
73 }
74
75 return l, resp, nil
76 }
77
78
79
80
81
82 func (s *GroupLabelsService) GetGroupLabel(gid interface{}, labelID interface{}, options ...RequestOptionFunc) (*GroupLabel, *Response, error) {
83 group, err := parseID(gid)
84 if err != nil {
85 return nil, nil, err
86 }
87 label, err := parseID(labelID)
88 if err != nil {
89 return nil, nil, err
90 }
91 u := fmt.Sprintf("groups/%s/labels/%s", PathEscape(group), PathEscape(label))
92
93 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
94 if err != nil {
95 return nil, nil, err
96 }
97
98 var l *GroupLabel
99 resp, err := s.client.Do(req, &l)
100 if err != nil {
101 return nil, resp, err
102 }
103
104 return l, resp, nil
105 }
106
107
108
109
110
111 type CreateGroupLabelOptions CreateLabelOptions
112
113
114
115
116
117
118 func (s *GroupLabelsService) CreateGroupLabel(gid interface{}, opt *CreateGroupLabelOptions, options ...RequestOptionFunc) (*GroupLabel, *Response, error) {
119 group, err := parseID(gid)
120 if err != nil {
121 return nil, nil, err
122 }
123 u := fmt.Sprintf("groups/%s/labels", PathEscape(group))
124
125 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
126 if err != nil {
127 return nil, nil, err
128 }
129
130 l := new(GroupLabel)
131 resp, err := s.client.Do(req, l)
132 if err != nil {
133 return nil, resp, err
134 }
135
136 return l, resp, nil
137 }
138
139
140
141
142
143 type DeleteGroupLabelOptions DeleteLabelOptions
144
145
146
147
148
149 func (s *GroupLabelsService) DeleteGroupLabel(gid interface{}, lid interface{}, opt *DeleteGroupLabelOptions, options ...RequestOptionFunc) (*Response, error) {
150 group, err := parseID(gid)
151 if err != nil {
152 return nil, err
153 }
154 u := fmt.Sprintf("groups/%s/labels", PathEscape(group))
155
156 if lid != nil {
157 label, err := parseID(lid)
158 if err != nil {
159 return nil, err
160 }
161 u = fmt.Sprintf("groups/%s/labels/%s", PathEscape(group), PathEscape(label))
162 }
163
164 req, err := s.client.NewRequest(http.MethodDelete, u, opt, options)
165 if err != nil {
166 return nil, err
167 }
168
169 return s.client.Do(req, nil)
170 }
171
172
173
174
175
176 type UpdateGroupLabelOptions UpdateLabelOptions
177
178
179
180
181
182
183 func (s *GroupLabelsService) UpdateGroupLabel(gid interface{}, opt *UpdateGroupLabelOptions, options ...RequestOptionFunc) (*GroupLabel, *Response, error) {
184 group, err := parseID(gid)
185 if err != nil {
186 return nil, nil, err
187 }
188 u := fmt.Sprintf("groups/%s/labels", PathEscape(group))
189
190 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
191 if err != nil {
192 return nil, nil, err
193 }
194
195 l := new(GroupLabel)
196 resp, err := s.client.Do(req, l)
197 if err != nil {
198 return nil, resp, err
199 }
200
201 return l, resp, nil
202 }
203
204
205
206
207
208
209
210 func (s *GroupLabelsService) SubscribeToGroupLabel(gid interface{}, labelID interface{}, options ...RequestOptionFunc) (*GroupLabel, *Response, error) {
211 group, err := parseID(gid)
212 if err != nil {
213 return nil, nil, err
214 }
215 label, err := parseID(labelID)
216 if err != nil {
217 return nil, nil, err
218 }
219 u := fmt.Sprintf("groups/%s/labels/%s/subscribe", PathEscape(group), PathEscape(label))
220
221 req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
222 if err != nil {
223 return nil, nil, err
224 }
225
226 l := new(GroupLabel)
227 resp, err := s.client.Do(req, l)
228 if err != nil {
229 return nil, resp, err
230 }
231
232 return l, resp, nil
233 }
234
235
236
237
238
239
240
241 func (s *GroupLabelsService) UnsubscribeFromGroupLabel(gid interface{}, labelID interface{}, options ...RequestOptionFunc) (*Response, error) {
242 group, err := parseID(gid)
243 if err != nil {
244 return nil, err
245 }
246 label, err := parseID(labelID)
247 if err != nil {
248 return nil, err
249 }
250 u := fmt.Sprintf("groups/%s/labels/%s/unsubscribe", PathEscape(group), PathEscape(label))
251
252 req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
253 if err != nil {
254 return nil, err
255 }
256
257 return s.client.Do(req, nil)
258 }
259
View as plain text