Skip to content

Commit dac544d

Browse files
committed
improve API usage
1 parent 6e474d2 commit dac544d

File tree

5 files changed

+39
-10
lines changed

5 files changed

+39
-10
lines changed

gitlab.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,14 @@ func (g *Gitlab) ResourceUrl(url string, params map[string]string) string {
5757
}
5858
}
5959

60-
url = g.BaseUrl + g.ApiPath + url + "?private_token=" + g.Token
60+
url = g.BaseUrl + g.ApiPath + url
61+
62+
if strings.Contains(url, "?") {
63+
url = url + "&private_token=" + g.Token
64+
} else {
65+
url = url + "?private_token=" + g.Token
66+
}
67+
6168
return url
6269
}
6370

public_keys.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import (
77

88
const (
99
// ID
10-
user_keys = "/user/keys" // Get current user keys
11-
user_key = "/user/keys/:id" // Get user key by id
12-
custom_user_keys = "/user/:id/keys" // Create key for user with :id
10+
user_keys = "/user/keys" // Get current user keys
11+
user_key = "/user/keys/:id" // Get user key by id
12+
list_keys = "/users/:uid/keys" // Get keys for the user id
13+
custom_user_keys = "/user/:id/keys" // Create key for user with :id
1314
)
1415

1516
type PublicKey struct {
@@ -29,6 +30,17 @@ func (g *Gitlab) UserKeys() ([]*PublicKey, error) {
2930
return keys, err
3031
}
3132

33+
func (g *Gitlab) ListKeys(id string) ([]*PublicKey, error) {
34+
url := g.ResourceUrl(list_keys, map[string]string{":uid": id})
35+
var keys []*PublicKey
36+
contents, err := g.buildAndExecRequest("GET", url, nil)
37+
if err == nil {
38+
err = json.Unmarshal(contents, &keys)
39+
}
40+
return keys, err
41+
}
42+
43+
3244
func (g *Gitlab) UserKey(id string) (*PublicKey, error) {
3345
url := g.ResourceUrl(user_key, map[string]string{":id": id})
3446
var key *PublicKey

public_keys_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ func TestGetUserKeys(t *testing.T) {
1414
defer ts.Close()
1515
}
1616

17+
func TestListKeys(t *testing.T) {
18+
ts, gitlab := Stub("stubs/public_keys/index.json")
19+
keys, err := gitlab.ListKeys("1")
20+
21+
assert.Equal(t, err, nil)
22+
assert.Equal(t, len(keys), 2)
23+
defer ts.Close()
24+
}
25+
1726
func TestGetUserKey(t *testing.T) {
1827
ts, gitlab := Stub("stubs/public_keys/show.json")
1928
key, err := gitlab.UserKey("1")

users.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package gogitlab
22

33
import (
44
"encoding/json"
5+
"strconv"
56
)
67

78
const (
8-
users_url = "/users" // Get users list
9-
user_url = "/users/:id" // Get a single user.
10-
current_user_url = "/user" // Get current user
9+
users_url = "/users?page=:page&per_page=:per_page" // Get users list
10+
user_url = "/users/:id" // Get a single user.
11+
current_user_url = "/user" // Get current user
1112
)
1213

1314
type User struct {
@@ -27,9 +28,9 @@ type User struct {
2728
ColorSchemeId int `json:"color_scheme_id,color_scheme_id"`
2829
}
2930

30-
func (g *Gitlab) Users() ([]*User, error) {
31+
func (g *Gitlab) Users(page, per_page int) ([]*User, error) {
3132

32-
url := g.ResourceUrl(user_url, nil)
33+
url := g.ResourceUrl(users_url, map[string]string{":page": strconv.Itoa(page), ":per_page": strconv.Itoa(per_page)})
3334

3435
var users []*User
3536

users_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
func TestUsers(t *testing.T) {
99
ts, gitlab := Stub("stubs/users/index.json")
10-
users, err := gitlab.Users()
10+
users, err := gitlab.Users(0, 0)
1111

1212
assert.Equal(t, err, nil)
1313
assert.Equal(t, len(users), 2)

0 commit comments

Comments
 (0)