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