/
user.go
54 lines (47 loc) · 1.17 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package client
import (
"context"
"encoding/json"
"net/url"
"strconv"
"github.com/keys-pub/keys"
"github.com/keys-pub/keys-ext/http/api"
"github.com/pkg/errors"
)
// UserSearch ...
func (c *Client) UserSearch(ctx context.Context, query string, limit int) (*api.UserSearchResponse, error) {
params := url.Values{}
params.Add("q", query)
if limit > 0 {
params.Add("limit", strconv.Itoa(limit))
}
resp, err := c.Request(ctx, &Request{Method: "GET", Path: "/user/search", Params: params})
if err != nil {
return nil, err
}
if resp == nil {
return nil, errors.Errorf("/user/search not found")
}
// TODO: Support paging
var out api.UserSearchResponse
if err := json.Unmarshal(resp.Data, &out); err != nil {
return nil, err
}
return &out, nil
}
// User ...
func (c *Client) User(ctx context.Context, kid keys.ID) (*api.UserResponse, error) {
params := url.Values{}
resp, err := c.Request(ctx, &Request{Method: "GET", Path: "/user/" + kid.String(), Params: params})
if err != nil {
return nil, err
}
if resp == nil {
return nil, nil
}
var out api.UserResponse
if err := json.Unmarshal(resp.Data, &out); err != nil {
return nil, err
}
return &out, nil
}