-
Notifications
You must be signed in to change notification settings - Fork 0
/
user.go
86 lines (70 loc) · 2.35 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package eygo
import (
"encoding/json"
)
// User is a data strcture that models a user on the Engine Yard API.
type User struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Email string `json:"email,omitempty"`
Role string `json:"role,omitempty"`
APIToken string `json:"api_token,omitempty"`
Verified bool `json:"verified,omitempty"`
Staff bool `json:"staff,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
DeletedAt string `json:"deleted_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
}
// UserService is a repository one can use to retrieve User records from
// the API.
type UserService struct {
Driver Driver
}
// NewUserService returns a UserService configured with the provided Driver.
func NewUserService(driver Driver) *UserService {
return &UserService{Driver: driver}
}
// All returns an array of all User records that match the provided Params.
func (service *UserService) All(params Params) []*User {
users := make([]*User, 0)
response := service.Driver.Get("users", params)
if response.Okay() {
for _, page := range response.Pages {
wrapper := struct {
Users []*User `json:"users,omitempty"`
}{}
if err := json.Unmarshal(page, &wrapper); err == nil {
users = append(users, wrapper.Users...)
}
}
}
return users
}
// Current returns the user that is associated with the current API session.
// If there are issues along the way, an error is returned.
func (service *UserService) Current() (*User, error) {
response := service.Driver.Get("users/current", nil)
if !response.Okay() {
return nil, response.Error
}
wrapper := struct {
User *User `json:"user,omitempty"`
}{}
err := json.Unmarshal(response.Pages[0], &wrapper)
if err != nil {
return nil, err
}
return wrapper.User, nil
}
/*
Copyright 2018 Dennis Walters
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/