Skip to content

Commit 2ff1fb9

Browse files
author
Sander van Harmelen
committed
Tweak PR xanzy#222
Fixup PR xanzy#222 just a little. Most important fix that was needed, was the return type used for the Get call.
1 parent a97794b commit 2ff1fb9

File tree

2 files changed

+84
-77
lines changed

2 files changed

+84
-77
lines changed

services.go

Lines changed: 57 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,18 @@ type ServicesService struct {
3434
//
3535
// GitLab API docs: https://docs.gitlab.com/ce/api/services.html
3636
type Service struct {
37-
ID *int `json:"id"`
38-
Title *string `json:"title"`
37+
ID int `json:"id"`
38+
Title string `json:"title"`
3939
CreatedAt *time.Time `json:"created_at"`
40-
UpdatedAt *time.Time `json:"created_at"`
41-
Active *bool `json:"active"`
42-
PushEvents *bool `json:"push_events"`
43-
IssuesEvents *bool `json:"issues_events"`
44-
MergeRequestsEvents *bool `json:"merge_requests_events"`
45-
TagPushEvents *bool `json:"tag_push_events"`
46-
NoteEvents *bool `json:"note_events"`
40+
UpdatedAt *time.Time `json:"updated_at"`
41+
Active bool `json:"active"`
42+
PushEvents bool `json:"push_events"`
43+
IssuesEvents bool `json:"issues_events"`
44+
MergeRequestsEvents bool `json:"merge_requests_events"`
45+
TagPushEvents bool `json:"tag_push_events"`
46+
NoteEvents bool `json:"note_events"`
47+
PipelineEvents bool `json:"pipeline_events"`
48+
JobEvents bool `json:"job_events"`
4749
}
4850

4951
// SetGitLabCIServiceOptions represents the available SetGitLabCIService()
@@ -191,19 +193,19 @@ func (s *ServicesService) DeleteDroneCIService(pid interface{}, options ...Optio
191193
return s.client.Do(req, nil)
192194
}
193195

194-
// DroneCIServiceProperties represents Drone CI specific properties.
195-
type DroneCIServiceProperties struct {
196-
Token *string `url:"token" json:"token"`
197-
DroneURL *string `url:"drone_url" json:"drone_url"`
198-
EnableSSLVerification *bool `url:"enable_ssl_verification" json:"enable_ssl_verification"`
199-
}
200-
201196
// DroneCIService represents Drone CI service settings.
202197
type DroneCIService struct {
203198
Service
204199
Properties *DroneCIServiceProperties `json:"properties"`
205200
}
206201

202+
// DroneCIServiceProperties represents Drone CI specific properties.
203+
type DroneCIServiceProperties struct {
204+
Token string `json:"token"`
205+
DroneURL string `json:"drone_url"`
206+
EnableSSLVerification bool `json:"enable_ssl_verification"`
207+
}
208+
207209
// GetDroneCIService gets Drone CI service settings for a project.
208210
//
209211
// GitLab API docs:
@@ -220,13 +222,49 @@ func (s *ServicesService) GetDroneCIService(pid interface{}, options ...OptionFu
220222
return nil, nil, err
221223
}
222224

223-
opt := new(DroneCIService)
224-
resp, err := s.client.Do(req, opt)
225+
svc := new(DroneCIService)
226+
resp, err := s.client.Do(req, svc)
227+
if err != nil {
228+
return nil, resp, err
229+
}
230+
231+
return svc, resp, err
232+
}
233+
234+
// SlackService represents Slack service settings.
235+
type SlackService struct {
236+
Service
237+
Properties *SlackServiceProperties `json:"properties"`
238+
}
239+
240+
// SlackServiceProperties represents Slack specific properties.
241+
type SlackServiceProperties struct {
242+
NotifyOnlyBrokenPipelines bool `json:"notify_only_broken_pipelines"`
243+
}
244+
245+
// GetSlackService gets Slack service settings for a project.
246+
//
247+
// GitLab API docs:
248+
// https://docs.gitlab.com/ce/api/services.html#get-slack-service-settings
249+
func (s *ServicesService) GetSlackService(pid interface{}, options ...OptionFunc) (*SlackService, *Response, error) {
250+
project, err := parseID(pid)
251+
if err != nil {
252+
return nil, nil, err
253+
}
254+
u := fmt.Sprintf("projects/%s/services/slack", url.QueryEscape(project))
255+
256+
req, err := s.client.NewRequest("GET", u, nil, options)
257+
if err != nil {
258+
return nil, nil, err
259+
}
260+
261+
svc := new(SlackService)
262+
resp, err := s.client.Do(req, svc)
225263
if err != nil {
226264
return nil, resp, err
227265
}
228266

229-
return opt, resp, err
267+
return svc, resp, err
230268
}
231269

232270
// SetSlackServiceOptions represents the available SetSlackService()
@@ -277,28 +315,3 @@ func (s *ServicesService) DeleteSlackService(pid interface{}, options ...OptionF
277315

278316
return s.client.Do(req, nil)
279317
}
280-
281-
// GetSlackService gets Slack service settings for a project.
282-
//
283-
// GitLab API docs:
284-
// https://docs.gitlab.com/ce/api/services.html#get-slack-service-settings
285-
func (s *ServicesService) GetSlackService(pid interface{}, options ...OptionFunc) (*SetSlackServiceOptions, *Response, error) {
286-
project, err := parseID(pid)
287-
if err != nil {
288-
return nil, nil, err
289-
}
290-
u := fmt.Sprintf("projects/%s/services/slack", url.QueryEscape(project))
291-
292-
req, err := s.client.NewRequest("GET", u, nil, options)
293-
if err != nil {
294-
return nil, nil, err
295-
}
296-
297-
opt := new(SetSlackServiceOptions)
298-
resp, err := s.client.Do(req, opt)
299-
if err != nil {
300-
return nil, resp, err
301-
}
302-
303-
return opt, resp, err
304-
}

services_test.go

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,25 @@ import (
77
"testing"
88
)
99

10+
func TestGetDroneCIService(t *testing.T) {
11+
mux, server, client := setup()
12+
defer teardown(server)
13+
14+
mux.HandleFunc("/projects/1/services/drone-ci", func(w http.ResponseWriter, r *http.Request) {
15+
testMethod(t, r, "GET")
16+
fmt.Fprint(w, `{"id":1}`)
17+
})
18+
want := &DroneCIService{Service: Service{ID: 1}}
19+
20+
service, _, err := client.Services.GetDroneCIService(1)
21+
if err != nil {
22+
t.Fatalf("Services.GetDroneCIService returns an error: %v", err)
23+
}
24+
if !reflect.DeepEqual(want, service) {
25+
t.Errorf("Services.GetDroneCIService returned %+v, want %+v", service, want)
26+
}
27+
}
28+
1029
func TestSetDroneCIService(t *testing.T) {
1130
mux, server, client := setup()
1231
defer teardown(server)
@@ -16,8 +35,8 @@ func TestSetDroneCIService(t *testing.T) {
1635
})
1736

1837
opt := &SetDroneCIServiceOptions{String("t"), String("u"), Bool(true)}
19-
_, err := client.Services.SetDroneCIService(1, opt)
2038

39+
_, err := client.Services.SetDroneCIService(1, opt)
2140
if err != nil {
2241
t.Fatalf("Services.SetDroneCIService returns an error: %v", err)
2342
}
@@ -32,30 +51,27 @@ func TestDeleteDroneCIService(t *testing.T) {
3251
})
3352

3453
_, err := client.Services.DeleteDroneCIService(1)
35-
3654
if err != nil {
3755
t.Fatalf("Services.DeleteDroneCIService returns an error: %v", err)
3856
}
3957
}
4058

41-
func TestGetDroneCIService(t *testing.T) {
59+
func TestGetSlackService(t *testing.T) {
4260
mux, server, client := setup()
4361
defer teardown(server)
4462

45-
mux.HandleFunc("/projects/1/services/drone-ci", func(w http.ResponseWriter, r *http.Request) {
63+
mux.HandleFunc("/projects/1/services/slack", func(w http.ResponseWriter, r *http.Request) {
4664
testMethod(t, r, "GET")
4765
fmt.Fprint(w, `{"id":1}`)
4866
})
49-
want := &DroneCIService{Service: Service{ID: Int(1)}}
50-
51-
service, _, err := client.Services.GetDroneCIService(1)
67+
want := &SlackService{Service: Service{ID: 1}}
5268

69+
service, _, err := client.Services.GetSlackService(1)
5370
if err != nil {
54-
t.Fatalf("Services.GetDroneCIService returns an error: %v", err)
71+
t.Fatalf("Services.GetSlackService returns an error: %v", err)
5572
}
56-
5773
if !reflect.DeepEqual(want, service) {
58-
t.Errorf("Services.GetDroneCIService returned %+v, want %+v", service, want)
74+
t.Errorf("Services.GetSlackService returned %+v, want %+v", service, want)
5975
}
6076
}
6177

@@ -72,8 +88,8 @@ func TestSetSlackService(t *testing.T) {
7288
Username: String("username"),
7389
Channel: String("#development"),
7490
}
75-
_, err := client.Services.SetSlackService(1, opt)
7691

92+
_, err := client.Services.SetSlackService(1, opt)
7793
if err != nil {
7894
t.Fatalf("Services.SetSlackService returns an error: %v", err)
7995
}
@@ -88,29 +104,7 @@ func TestDeleteSlackService(t *testing.T) {
88104
})
89105

90106
_, err := client.Services.DeleteSlackService(1)
91-
92107
if err != nil {
93108
t.Fatalf("Services.DeleteSlackService returns an error: %v", err)
94109
}
95110
}
96-
97-
func TestGetSlackService(t *testing.T) {
98-
mux, server, client := setup()
99-
defer teardown(server)
100-
101-
mux.HandleFunc("/projects/1/services/slack", func(w http.ResponseWriter, r *http.Request) {
102-
testMethod(t, r, "GET")
103-
fmt.Fprint(w, `{"id":1}`)
104-
})
105-
want := &SetSlackServiceOptions{}
106-
107-
service, _, err := client.Services.GetSlackService(1)
108-
109-
if err != nil {
110-
t.Fatalf("Services.GetSlackService returns an error: %v", err)
111-
}
112-
113-
if !reflect.DeepEqual(want, service) {
114-
t.Errorf("Services.GetSlackService returned %+v, want %+v", service, want)
115-
}
116-
}

0 commit comments

Comments
 (0)