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