forked from manifoldco/torus-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
users.go
59 lines (49 loc) · 1.58 KB
/
users.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
55
56
57
58
59
package api
import (
"context"
"github.com/manifoldco/torus-cli/apitypes"
"github.com/manifoldco/torus-cli/identity"
"github.com/manifoldco/torus-cli/primitive"
)
// UsersClient makes proxied requests to the registry's users endpoints
type UsersClient struct {
client *Client
}
// UserResult is the payload returned for a user object
type UserResult struct {
ID *identity.ID `json:"id"`
Version uint8 `json:"version"`
Body *primitive.User `json:"body"`
}
// Signup will have the daemon create a new user request
func (u *UsersClient) Signup(ctx context.Context, signup *apitypes.Signup, output *ProgressFunc) (*UserResult, error) {
req, _, err := u.client.NewRequest("POST", "/signup", nil, &signup, false)
if err != nil {
return nil, err
}
user := UserResult{}
_, err = u.client.Do(ctx, req, &user, nil, output)
return &user, err
}
// VerifyEmail will confirm the user's email with the registry
func (u *UsersClient) VerifyEmail(ctx context.Context, verifyCode string) error {
verify := apitypes.VerifyEmail{
Code: verifyCode,
}
req, _, err := u.client.NewRequest("POST", "/users/verify", nil, &verify, true)
if err != nil {
return err
}
_, err = u.client.Do(ctx, req, nil, nil, nil)
return err
}
// Update performs a profile update to the user object
func (u *UsersClient) Update(ctx context.Context, delta apitypes.ProfileUpdate) (*UserResult, error) {
req, _, err := u.client.NewRequest("PATCH", "/self", nil, &delta, false)
if err != nil {
return nil, err
}
user := UserResult{}
_, err = u.client.Do(ctx, req, &user, nil, nil)
return &user, err
}