Skip to content

Commit c9a86de

Browse files
authored
Added support for pipelines endpoint (#106)
1 parent cec8f67 commit c9a86de

File tree

4 files changed

+111
-0
lines changed

4 files changed

+111
-0
lines changed

bitbucket.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ type teams interface {
9191
Projects(teamname string) (interface{}, error)
9292
}
9393

94+
type pipelines interface {
95+
List(po *PipelinesOptions) (interface{}, error)
96+
Get(po *PipelinesOptions) (interface{}, error)
97+
ListSteps(po *PipelinesOptions) (interface{}, error)
98+
GetStep(po *PipelinesOptions) (interface{}, error)
99+
GetLog(po *PipelinesOptions) (string, error)
100+
}
101+
94102
type RepositoriesOptions struct {
95103
Owner string `json:"owner"`
96104
Role string `json:"role"` // role=[owner|admin|contributor|member]
@@ -284,3 +292,12 @@ type PageRes struct {
284292
MaxDepth int32 `json:"max_depth"`
285293
Size int32 `json:"size"`
286294
}
295+
296+
type PipelinesOptions struct {
297+
Owner string `json:"owner"`
298+
RepoSlug string `json:"repo_slug"`
299+
Query string `json:"query"`
300+
Sort string `json:"sort"`
301+
IDOrUuid string `json:"ID"`
302+
StepUuid string `json:"StepUUID"`
303+
}

client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ func injectClient(a *auth) *Client {
129129
c.Repositories = &Repositories{
130130
c: c,
131131
PullRequests: &PullRequests{c: c},
132+
Pipelines: &Pipelines{c: c},
132133
Repository: &Repository{c: c},
133134
Commits: &Commits{c: c},
134135
Diff: &Diff{c: c},

pipelines.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package bitbucket
2+
3+
import (
4+
"io/ioutil"
5+
"net/url"
6+
)
7+
8+
type Pipelines struct {
9+
c *Client
10+
}
11+
12+
func (p *Pipelines) List(po *PipelinesOptions) (interface{}, error) {
13+
urlStr := p.c.requestUrl("/repositories/%s/%s/pipelines/", po.Owner, po.RepoSlug)
14+
15+
if po.Query != "" {
16+
parsed, err := url.Parse(urlStr)
17+
if err != nil {
18+
return nil, err
19+
}
20+
query := parsed.Query()
21+
query.Set("q", po.Query)
22+
parsed.RawQuery = query.Encode()
23+
urlStr = parsed.String()
24+
}
25+
26+
if po.Sort != "" {
27+
parsed, err := url.Parse(urlStr)
28+
if err != nil {
29+
return nil, err
30+
}
31+
query := parsed.Query()
32+
query.Set("sort", po.Sort)
33+
parsed.RawQuery = query.Encode()
34+
urlStr = parsed.String()
35+
}
36+
37+
return p.c.execute("GET", urlStr, "")
38+
}
39+
40+
func (p *Pipelines) Get(po *PipelinesOptions) (interface{}, error) {
41+
urlStr := p.c.requestUrl("/repositories/%s/%s/pipelines/%s", po.Owner, po.RepoSlug, po.IDOrUuid)
42+
return p.c.execute("GET", urlStr, "")
43+
}
44+
45+
func (p *Pipelines) ListSteps(po *PipelinesOptions) (interface{}, error) {
46+
urlStr := p.c.requestUrl("/repositories/%s/%s/pipelines/%s/steps/", po.Owner, po.RepoSlug, po.IDOrUuid)
47+
48+
if po.Query != "" {
49+
parsed, err := url.Parse(urlStr)
50+
if err != nil {
51+
return nil, err
52+
}
53+
query := parsed.Query()
54+
query.Set("q", po.Query)
55+
parsed.RawQuery = query.Encode()
56+
urlStr = parsed.String()
57+
}
58+
59+
if po.Sort != "" {
60+
parsed, err := url.Parse(urlStr)
61+
if err != nil {
62+
return nil, err
63+
}
64+
query := parsed.Query()
65+
query.Set("sort", po.Sort)
66+
parsed.RawQuery = query.Encode()
67+
urlStr = parsed.String()
68+
}
69+
70+
return p.c.execute("GET", urlStr, "")
71+
}
72+
73+
func (p *Pipelines) GetStep(po *PipelinesOptions) (interface{}, error) {
74+
urlStr := p.c.requestUrl("/repositories/%s/%s/pipelines/%s/steps/%s", po.Owner, po.RepoSlug, po.IDOrUuid, po.StepUuid)
75+
return p.c.execute("GET", urlStr, "")
76+
}
77+
78+
func (p *Pipelines) GetLog(po *PipelinesOptions) (string, error) {
79+
urlStr := p.c.requestUrl("/repositories/%s/%s/pipelines/%s/steps/%s/log", po.Owner, po.RepoSlug, po.IDOrUuid, po.StepUuid)
80+
responseBody, err := p.c.executeRaw("GET", urlStr, "")
81+
if err != nil {
82+
return "", err
83+
}
84+
defer responseBody.Close()
85+
86+
rawBody, err := ioutil.ReadAll(responseBody)
87+
if err != nil {
88+
return "", err
89+
}
90+
91+
return string(rawBody), nil
92+
}

repositories.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
type Repositories struct {
1212
c *Client
1313
PullRequests *PullRequests
14+
Pipelines *Pipelines
1415
Repository *Repository
1516
Commits *Commits
1617
Diff *Diff

0 commit comments

Comments
 (0)