diff --git a/api/users.go b/api/users.go index 3136d5a..c354275 100644 --- a/api/users.go +++ b/api/users.go @@ -24,17 +24,17 @@ func serveUser(w http.ResponseWriter, r *http.Request) error { return err } - return writeJSON(w, user) + return writeJSON(w, models.UserJSON{user}) } func serveCreateUser(w http.ResponseWriter, r *http.Request) error { - var user models.User + var user models.UserJSON err := json.NewDecoder(r.Body).Decode(&user) if err != nil { return err } - created, err := store.Users.Create(&user) + created, err := store.Users.Create(user.User) if err != nil { return err } @@ -59,7 +59,7 @@ func serveUsers(w http.ResponseWriter, r *http.Request) error { users = []*models.User{} } - return writeJSON(w, users) + return writeJSON(w, models.UsersJSON{Users: users}) } func serveAuthenticateUser(w http.ResponseWriter, r *http.Request) error { diff --git a/models/users.go b/models/users.go index 60f3fc4..5a95df1 100644 --- a/models/users.go +++ b/models/users.go @@ -21,6 +21,14 @@ type User struct { DeletedAt NullTime `db:"deleted_at" json:"deletedAt"` } +type UserJSON struct { + User *User `json:"user"` +} + +type UsersJSON struct { + Users []*User `json:"users"` +} + func (m *User) String() string { return fmt.Sprintf("%v", *m) } @@ -72,13 +80,13 @@ func (s *usersService) Get(id int64) (*User, error) { return nil, err } - var user *User + var user *UserJSON _, err = s.client.Do(req, &user) if err != nil { return nil, err } - return user, nil + return user.User, nil } func (s *usersService) Create(user *User) (bool, error) { @@ -87,7 +95,7 @@ func (s *usersService) Create(user *User) (bool, error) { return false, err } - req, err := s.client.NewRequest("POST", url.String(), user) + req, err := s.client.NewRequest("POST", url.String(), UserJSON{User: user}) if err != nil { return false, err } @@ -115,13 +123,13 @@ func (s *usersService) List(opt *UserListOptions) ([]*User, error) { return nil, err } - var users []*User + var users *UsersJSON _, err = s.client.Do(req, &users) if err != nil { return nil, err } - return users, nil + return users.Users, nil } func (s *usersService) Authenticate(username string, password string) (*UserSession, error) { diff --git a/models/users_test.go b/models/users_test.go index 57fab81..cbf9c63 100644 --- a/models/users_test.go +++ b/models/users_test.go @@ -25,7 +25,7 @@ func TestUsersService_Get(t *testing.T) { called = true testMethod(t, r, "GET") - writeJSON(w, want) + writeJSON(w, UserJSON{User: want}) }) user, err := client.Users.Get(1) @@ -54,7 +54,7 @@ func TestUsersService_Create(t *testing.T) { mux.HandleFunc(urlPath(t, router.CreateUser, nil), func(w http.ResponseWriter, r *http.Request) { called = true testMethod(t, r, "POST") - testBody(t, r, `{"id":1,"username":"Test User","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}`+"\n") + testBody(t, r, `{"user":{"id":1,"username":"Test User","createdAt":"0001-01-01T00:00:00Z","updatedAt":"0001-01-01T00:00:00Z","deletedAt":null}}`+"\n") w.WriteHeader(http.StatusCreated) writeJSON(w, want) @@ -92,7 +92,7 @@ func TestUsersService_List(t *testing.T) { testMethod(t, r, "GET") testFormValues(t, r, values{}) - writeJSON(w, want) + writeJSON(w, UsersJSON{Users: want}) }) users, err := client.Users.List(nil)