Skip to content
This repository was archived by the owner on Mar 17, 2021. It is now read-only.

Commit 68e6f19

Browse files
committed
add search api
1 parent 3eff318 commit 68e6f19

File tree

2 files changed

+94
-2
lines changed

2 files changed

+94
-2
lines changed

team.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ import (
55
"encoding/json"
66
"fmt"
77
"io/ioutil"
8+
"net/url"
89
)
910

11+
type SearchTeam struct {
12+
TotalCount int64 `json:"totalCount,omitempty"`
13+
Teams []Team `json:"teams,omitempty"`
14+
Page int64 `json:"page,omitempty"`
15+
PerPage int64 `json:"perPage,omitempty"`
16+
}
17+
1018
// Team consists of a get response
1119
// It's used in Add and Update API
1220
type Team struct {
@@ -36,6 +44,38 @@ type Preferences struct {
3644
Timezone string `json:"timezone"`
3745
}
3846

47+
func (c *Client) SearchTeam(query string) (*SearchTeam, error) {
48+
var result SearchTeam
49+
50+
page := "1"
51+
perPage := "1000"
52+
path := "/api/teams/search"
53+
queryValues := url.Values{}
54+
queryValues.Set("page", page)
55+
queryValues.Set("perPage", perPage)
56+
queryValues.Set("query", query)
57+
58+
req, err := c.newRequest("GET", path, queryValues, nil)
59+
if err != nil {
60+
return nil, err
61+
}
62+
resp, err := c.Do(req)
63+
if err != nil {
64+
return nil, err
65+
}
66+
if resp.StatusCode != 200 {
67+
return nil, fmt.Errorf(resp.Status)
68+
}
69+
data, err := ioutil.ReadAll(resp.Body)
70+
if err != nil {
71+
return nil, err
72+
}
73+
if err := json.Unmarshal(data, &result); err != nil {
74+
return nil, err
75+
}
76+
return &result, nil
77+
}
78+
3979
func (c *Client) Team(id int64) (*Team, error) {
4080
var team Team
4181

teams_test.go

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,23 @@ import (
66
)
77

88
const (
9+
searchTeamJSON = `
10+
{
11+
"totalCount": 1,
12+
"teams": [
13+
{
14+
"id": 1,
15+
"orgId": 1,
16+
"name": "MyTestTeam",
17+
"email": "",
18+
"avatarUrl": "/avatar/3f49c15916554246daa714b9bd0ee398",
19+
"memberCount": 1
20+
}
21+
],
22+
"page": 1,
23+
"perPage": 1000
24+
}
25+
`
926
getTeamJSON = `
1027
{
1128
"id": 1,
@@ -34,7 +51,7 @@ const (
3451
"auth_module": "oauth_github",
3552
"email": "user1@email.com",
3653
"login": "user1",
37-
"avatarUrl": "\/avatar\/1b3c32f6386b0185c40d359cdc733a79",
54+
"avatarUrl": "/avatar/1b3c32f6386b0185c40d359cdc733a79",
3855
"labels": [],
3956
"permission": 0
4057
},
@@ -45,7 +62,7 @@ const (
4562
"auth_module": "oauth_github",
4663
"email": "user2@email.com",
4764
"login": "user2",
48-
"avatarUrl": "\/avatar\/cad3c68da76e45d10269e8ef02f8e73e",
65+
"avatarUrl": "/avatar/cad3c68da76e45d10269e8ef02f8e73e",
4966
"labels": [],
5067
"permission": 0
5168
}
@@ -71,6 +88,41 @@ const (
7188
`
7289
)
7390

91+
func TestSearchTeam(t *testing.T) {
92+
server, client := gapiTestTools(200, searchTeamJSON)
93+
defer server.Close()
94+
95+
query := "myteam"
96+
resp, err := client.SearchTeam(query)
97+
if err != nil {
98+
t.Error(err)
99+
}
100+
101+
t.Log(pretty.PrettyFormat(resp))
102+
103+
expect := &SearchTeam{
104+
TotalCount: 1,
105+
Teams: []Team{
106+
{
107+
Id: 1,
108+
OrgId: 1,
109+
Name: "MyTestTeam",
110+
Email: "",
111+
AvatarUrl: "avatar/3f49c15916554246daa714b9bd0ee398",
112+
MemberCount: 1,
113+
Permission: 0,
114+
},
115+
},
116+
Page: 1,
117+
PerPage: 1000,
118+
}
119+
t.Run("check data", func(t *testing.T) {
120+
if expect.TotalCount != resp.TotalCount || expect.Teams[0].Name != resp.Teams[0].Name {
121+
t.Error("Not correctly data")
122+
}
123+
})
124+
}
125+
74126
func TestTeam(t *testing.T) {
75127
server, client := gapiTestTools(200, getTeamJSON)
76128
defer server.Close()

0 commit comments

Comments
 (0)