Skip to content

Commit f538244

Browse files
wzjgo1ktrysmt
authored andcommitted
dep -> mod (#67)
* dep -> mod * and add repos model
1 parent df6d5a4 commit f538244

File tree

6 files changed

+101
-130
lines changed

6 files changed

+101
-130
lines changed

Gopkg.lock

Lines changed: 0 additions & 78 deletions
This file was deleted.

Gopkg.toml

Lines changed: 0 additions & 46 deletions
This file was deleted.

bitbucket.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,9 @@ type DownloadsOptions struct {
233233
FilePath string `json:"filepath"`
234234
FileName string `json:"filename"`
235235
}
236+
237+
type PageRes struct {
238+
Page int32 `json:"page"`
239+
PageLen int32 `json:"pagelen"`
240+
Size int32 `json:"size"`
241+
}

go.mod

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module github.com/wzjgo1/go-bitbucket
2+
3+
go 1.12
4+
5+
require (
6+
github.com/golang/protobuf v1.0.0
7+
github.com/k0kubun/pp v2.3.0+incompatible
8+
github.com/mattn/go-colorable v0.0.9
9+
github.com/mattn/go-isatty v0.0.3
10+
github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238
11+
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01
12+
golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff
13+
golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54
14+
google.golang.org/appengine v1.0.0
15+
)

go.sum

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
2+
github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg=
3+
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
4+
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
5+
github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
6+
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
7+
golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
8+
golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
9+
google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=

repositories.go

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package bitbucket
22

3+
import (
4+
"encoding/json"
5+
6+
"github.com/mitchellh/mapstructure"
7+
)
8+
39
//"github.com/k0kubun/pp"
410

511
type Repositories struct {
@@ -10,27 +16,86 @@ type Repositories struct {
1016
Diff *Diff
1117
BranchRestrictions *BranchRestrictions
1218
Webhooks *Webhooks
13-
Downloads *Downloads
19+
Downloads *Downloads
1420
repositories
1521
}
1622

17-
func (r *Repositories) ListForAccount(ro *RepositoriesOptions) (interface{}, error) {
23+
type RepositoriesRes struct {
24+
Page int32
25+
Pagelen int32
26+
Size int32
27+
Items []Repository
28+
}
29+
30+
func (r *Repositories) ListForAccount(ro *RepositoriesOptions) (*RepositoriesRes, error) {
1831
urlStr := r.c.requestUrl("/repositories/%s", ro.Owner)
1932
if ro.Role != "" {
2033
urlStr += "?role=" + ro.Role
2134
}
22-
return r.c.execute("GET", urlStr, "")
35+
repos, err := r.c.execute("GET", urlStr, "")
36+
if err != nil {
37+
return nil, err
38+
}
39+
return decodeRepositorys(repos)
2340
}
2441

25-
func (r *Repositories) ListForTeam(ro *RepositoriesOptions) (interface{}, error) {
42+
func (r *Repositories) ListForTeam(ro *RepositoriesOptions) (*RepositoriesRes, error) {
2643
urlStr := r.c.requestUrl("/repositories/%s", ro.Owner)
2744
if ro.Role != "" {
2845
urlStr += "?role=" + ro.Role
2946
}
30-
return r.c.execute("GET", urlStr, "")
47+
repos, err := r.c.executeRaw("GET", urlStr, "")
48+
if err != nil {
49+
return nil, err
50+
}
51+
return decodeRepositorys(repos)
3152
}
3253

3354
func (r *Repositories) ListPublic() (interface{}, error) {
3455
urlStr := r.c.requestUrl("/repositories/", "")
35-
return r.c.execute("GET", urlStr, "")
56+
repos, err := r.c.execute("GET", urlStr, "")
57+
if err != nil {
58+
return nil, err
59+
}
60+
return decodeRepositorys(repos)
61+
}
62+
63+
func decodeRepositorys(reposResponse interface{}) (*RepositoriesRes, error) {
64+
var reposResponseMap map[string]interface{}
65+
err := json.Unmarshal(reposResponse.([]byte), &reposResponseMap)
66+
if err != nil {
67+
return nil, err
68+
}
69+
70+
repoArray := reposResponseMap["values"].([]interface{})
71+
var repos []Repository
72+
for _, repoEntry := range repoArray {
73+
var repo Repository
74+
err = mapstructure.Decode(repoEntry, &repo)
75+
if err == nil {
76+
repos = append(repos, repo)
77+
}
78+
}
79+
80+
page, ok := reposResponseMap["page"].(float64)
81+
if !ok {
82+
page = 0
83+
}
84+
85+
pagelen, ok := reposResponseMap["pagelen"].(float64)
86+
if !ok {
87+
pagelen = 0
88+
}
89+
size, ok := reposResponseMap["size"].(float64)
90+
if !ok {
91+
size = 0
92+
}
93+
94+
repositories := RepositoriesRes{
95+
Page: int32(page),
96+
Pagelen: int32(pagelen),
97+
Size: int32(size),
98+
Items: repos,
99+
}
100+
return &repositories, nil
36101
}

0 commit comments

Comments
 (0)