@@ -3,11 +3,8 @@ package linodego
3
3
import (
4
4
"context"
5
5
"encoding/json"
6
- "fmt"
7
- "net/url"
8
6
"time"
9
7
10
- "github.com/go-resty/resty/v2"
11
8
"github.com/linode/linodego/internal/parseabletime"
12
9
)
13
10
@@ -82,91 +79,53 @@ func (i User) GetUpdateOptions() (o UserUpdateOptions) {
82
79
return
83
80
}
84
81
85
- // UsersPagedResponse represents a paginated User API response
86
- type UsersPagedResponse struct {
87
- * PageOptions
88
- Data []User `json:"data"`
89
- }
90
-
91
- // endpoint gets the endpoint URL for User
92
- func (UsersPagedResponse ) endpoint (_ ... any ) string {
93
- return "account/users"
94
- }
95
-
96
- func (resp * UsersPagedResponse ) castResult (r * resty.Request , e string ) (int , int , error ) {
97
- res , err := coupleAPIErrors (r .SetResult (UsersPagedResponse {}).Get (e ))
98
- if err != nil {
99
- return 0 , 0 , err
100
- }
101
- castedRes := res .Result ().(* UsersPagedResponse )
102
- resp .Data = append (resp .Data , castedRes .Data ... )
103
- return castedRes .Pages , castedRes .Results , nil
104
- }
105
-
106
82
// ListUsers lists Users on the account
107
83
func (c * Client ) ListUsers (ctx context.Context , opts * ListOptions ) ([]User , error ) {
108
- response := UsersPagedResponse {}
109
- err := c .listHelper (ctx , & response , opts )
84
+ response , err := getPaginatedResults [User ](ctx , c , "account/users" , opts )
110
85
if err != nil {
111
86
return nil , err
112
87
}
113
88
114
- return response . Data , nil
89
+ return response , nil
115
90
}
116
91
117
92
// GetUser gets the user with the provided ID
118
93
func (c * Client ) GetUser (ctx context.Context , userID string ) (* User , error ) {
119
- userID = url .PathEscape (userID )
120
- e := fmt .Sprintf ("account/users/%s" , userID )
121
- req := c .R (ctx ).SetResult (& User {})
122
- r , err := coupleAPIErrors (req .Get (e ))
94
+ e := formatAPIPath ("account/users/%s" , userID )
95
+ response , err := doGETRequest [User ](ctx , c , e )
123
96
if err != nil {
124
97
return nil , err
125
98
}
126
99
127
- return r . Result ().( * User ) , nil
100
+ return response , nil
128
101
}
129
102
130
103
// CreateUser creates a User. The email address must be confirmed before the
131
104
// User account can be accessed.
132
105
func (c * Client ) CreateUser (ctx context.Context , opts UserCreateOptions ) (* User , error ) {
133
- body , err := json .Marshal (opts )
134
- if err != nil {
135
- return nil , err
136
- }
137
-
138
106
e := "account/users"
139
- req := c .R (ctx ).SetResult (& User {}).SetBody (string (body ))
140
- r , err := coupleAPIErrors (req .Post (e ))
107
+ response , err := doPOSTRequest [User ](ctx , c , e , opts )
141
108
if err != nil {
142
109
return nil , err
143
110
}
144
111
145
- return r . Result ().( * User ) , nil
112
+ return response , nil
146
113
}
147
114
148
115
// UpdateUser updates the User with the specified id
149
116
func (c * Client ) UpdateUser (ctx context.Context , userID string , opts UserUpdateOptions ) (* User , error ) {
150
- body , err := json .Marshal (opts )
151
- if err != nil {
152
- return nil , err
153
- }
154
-
155
- userID = url .PathEscape (userID )
156
- e := fmt .Sprintf ("account/users/%s" , userID )
157
- req := c .R (ctx ).SetResult (& User {}).SetBody (string (body ))
158
- r , err := coupleAPIErrors (req .Put (e ))
117
+ e := formatAPIPath ("account/users/%s" , userID )
118
+ response , err := doPUTRequest [User ](ctx , c , e , opts )
159
119
if err != nil {
160
120
return nil , err
161
121
}
162
122
163
- return r . Result ().( * User ) , nil
123
+ return response , nil
164
124
}
165
125
166
126
// DeleteUser deletes the User with the specified id
167
127
func (c * Client ) DeleteUser (ctx context.Context , userID string ) error {
168
- userID = url .PathEscape (userID )
169
- e := fmt .Sprintf ("account/users/%s" , userID )
170
- _ , err := coupleAPIErrors (c .R (ctx ).Delete (e ))
128
+ e := formatAPIPath ("account/users/%s" , userID )
129
+ err := doDELETERequest (ctx , c , e )
171
130
return err
172
131
}
0 commit comments