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 GroupBadgesService struct {
29 client *Client
30 }
31
32
33 type BadgeKind string
34
35
36 const (
37 ProjectBadgeKind BadgeKind = "project"
38 GroupBadgeKind BadgeKind = "group"
39 )
40
41
42
43
44
45 type GroupBadge struct {
46 ID int `json:"id"`
47 Name string `json:"name"`
48 LinkURL string `json:"link_url"`
49 ImageURL string `json:"image_url"`
50 RenderedLinkURL string `json:"rendered_link_url"`
51 RenderedImageURL string `json:"rendered_image_url"`
52 Kind BadgeKind `json:"kind"`
53 }
54
55
56
57
58
59 type ListGroupBadgesOptions struct {
60 ListOptions
61 Name *string `url:"name,omitempty" json:"name,omitempty"`
62 }
63
64
65
66
67
68 func (s *GroupBadgesService) ListGroupBadges(gid interface{}, opt *ListGroupBadgesOptions, options ...RequestOptionFunc) ([]*GroupBadge, *Response, error) {
69 group, err := parseID(gid)
70 if err != nil {
71 return nil, nil, err
72 }
73 u := fmt.Sprintf("groups/%s/badges", PathEscape(group))
74
75 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
76 if err != nil {
77 return nil, nil, err
78 }
79
80 var gb []*GroupBadge
81 resp, err := s.client.Do(req, &gb)
82 if err != nil {
83 return nil, resp, err
84 }
85
86 return gb, resp, nil
87 }
88
89
90
91
92
93 func (s *GroupBadgesService) GetGroupBadge(gid interface{}, badge int, options ...RequestOptionFunc) (*GroupBadge, *Response, error) {
94 group, err := parseID(gid)
95 if err != nil {
96 return nil, nil, err
97 }
98 u := fmt.Sprintf("groups/%s/badges/%d", PathEscape(group), badge)
99
100 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
101 if err != nil {
102 return nil, nil, err
103 }
104
105 gb := new(GroupBadge)
106 resp, err := s.client.Do(req, gb)
107 if err != nil {
108 return nil, resp, err
109 }
110
111 return gb, resp, nil
112 }
113
114
115
116
117
118 type AddGroupBadgeOptions struct {
119 LinkURL *string `url:"link_url,omitempty" json:"link_url,omitempty"`
120 ImageURL *string `url:"image_url,omitempty" json:"image_url,omitempty"`
121 Name *string `url:"name,omitempty" json:"name,omitempty"`
122 }
123
124
125
126
127
128 func (s *GroupBadgesService) AddGroupBadge(gid interface{}, opt *AddGroupBadgeOptions, options ...RequestOptionFunc) (*GroupBadge, *Response, error) {
129 group, err := parseID(gid)
130 if err != nil {
131 return nil, nil, err
132 }
133 u := fmt.Sprintf("groups/%s/badges", PathEscape(group))
134
135 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
136 if err != nil {
137 return nil, nil, err
138 }
139
140 gb := new(GroupBadge)
141 resp, err := s.client.Do(req, gb)
142 if err != nil {
143 return nil, resp, err
144 }
145
146 return gb, resp, nil
147 }
148
149
150
151
152
153 type EditGroupBadgeOptions struct {
154 LinkURL *string `url:"link_url,omitempty" json:"link_url,omitempty"`
155 ImageURL *string `url:"image_url,omitempty" json:"image_url,omitempty"`
156 Name *string `url:"name,omitempty" json:"name,omitempty"`
157 }
158
159
160
161
162
163 func (s *GroupBadgesService) EditGroupBadge(gid interface{}, badge int, opt *EditGroupBadgeOptions, options ...RequestOptionFunc) (*GroupBadge, *Response, error) {
164 group, err := parseID(gid)
165 if err != nil {
166 return nil, nil, err
167 }
168 u := fmt.Sprintf("groups/%s/badges/%d", PathEscape(group), badge)
169
170 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
171 if err != nil {
172 return nil, nil, err
173 }
174
175 gb := new(GroupBadge)
176 resp, err := s.client.Do(req, gb)
177 if err != nil {
178 return nil, resp, err
179 }
180
181 return gb, resp, nil
182 }
183
184
185
186
187
188 func (s *GroupBadgesService) DeleteGroupBadge(gid interface{}, badge int, options ...RequestOptionFunc) (*Response, error) {
189 group, err := parseID(gid)
190 if err != nil {
191 return nil, err
192 }
193 u := fmt.Sprintf("groups/%s/badges/%d", PathEscape(group), badge)
194
195 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
196 if err != nil {
197 return nil, err
198 }
199
200 return s.client.Do(req, nil)
201 }
202
203
204
205
206
207 type GroupBadgePreviewOptions struct {
208 LinkURL *string `url:"link_url,omitempty" json:"link_url,omitempty"`
209 ImageURL *string `url:"image_url,omitempty" json:"image_url,omitempty"`
210 Name *string `url:"name,omitempty" json:"name,omitempty"`
211 }
212
213
214
215
216
217
218 func (s *GroupBadgesService) PreviewGroupBadge(gid interface{}, opt *GroupBadgePreviewOptions, options ...RequestOptionFunc) (*GroupBadge, *Response, error) {
219 group, err := parseID(gid)
220 if err != nil {
221 return nil, nil, err
222 }
223 u := fmt.Sprintf("groups/%s/badges/render", PathEscape(group))
224
225 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
226 if err != nil {
227 return nil, nil, err
228 }
229
230 gb := new(GroupBadge)
231 resp, err := s.client.Do(req, &gb)
232 if err != nil {
233 return nil, resp, err
234 }
235
236 return gb, resp, nil
237 }
238
View as plain text