11 50558780 2022-01-06 o // User represents a User object.
12 50558780 2022-01-06 o // Note that this is different from an ApiUser.
13 6e415953 2022-01-06 o type User struct {
16 6e415953 2022-01-06 o Groups []string
19 6e415953 2022-01-06 o var testUser = User{
20 6e415953 2022-01-06 o Name: "testUser",
21 6e415953 2022-01-06 o Email: "test@example.com",
24 6e415953 2022-01-06 o var ErrNoUser = errors.New("no such user")
26 6e415953 2022-01-06 o func (u User) MarshalJSON() ([]byte, error) {
27 6e415953 2022-01-06 o type Alias User
28 6e415953 2022-01-06 o return json.Marshal(&struct {
30 6e415953 2022-01-06 o }{Attrs: (Alias)(u)})
33 6e415953 2022-01-06 o func (c *Client) Users() ([]User, error) {
34 6e415953 2022-01-06 o _, err := c.get("/objects/users")
35 6e415953 2022-01-06 o if err != nil {
36 6e415953 2022-01-06 o return nil, err
38 6e415953 2022-01-06 o return []User{testUser}, nil
41 6e415953 2022-01-06 o func (c *Client) LookupUser(name string) (User, error) {
42 6e415953 2022-01-06 o resp, err := c.get("/objects/users/" + name)
43 6e415953 2022-01-06 o if err != nil {
44 6e415953 2022-01-06 o return User{}, err
46 6e415953 2022-01-06 o if resp.StatusCode == http.StatusNotFound {
47 6e415953 2022-01-06 o return User{}, fmt.Errorf("lookup %s: %w", name, ErrNoUser)
49 6e415953 2022-01-06 o return testUser, nil
52 50558780 2022-01-06 o // CreateUser creates the User u identified by u.Name.
53 50558780 2022-01-06 o // An error is returned if the User already exists or on any other error.
54 6e415953 2022-01-06 o func (c *Client) CreateUser(u User) error {
55 6e415953 2022-01-06 o buf := &bytes.Buffer{}
56 6e415953 2022-01-06 o if err := json.NewEncoder(buf).Encode(u); err != nil {
59 50558780 2022-01-06 o if err := c.put("/objects/users/"+u.Name, buf); err != nil {
60 6e415953 2022-01-06 o return fmt.Errorf("create %s: %w", u.Name, err)
65 50558780 2022-01-06 o // DeleteUser deletes the User identified by name.
66 50558780 2022-01-06 o // ErrNoUser is returned if the User doesn't exist.
67 6e415953 2022-01-06 o func (c *Client) DeleteUser(name string) error {
68 6e415953 2022-01-06 o if err := c.delete("/objects/users/" + name); err != nil {
69 6e415953 2022-01-06 o return fmt.Errorf("delete user %s: %w", name, err)