feat: add stuff for users
This commit is contained in:
parent
b54a862e23
commit
b104e417b7
@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"dacremont.xyz/learnrest/api/messages"
|
||||
"dacremont.xyz/learnrest/api/users"
|
||||
)
|
||||
|
||||
type Api struct {}
|
||||
@ -11,7 +12,8 @@ type Api struct {}
|
||||
func NewApi () *http.ServeMux {
|
||||
mux := http.NewServeMux()
|
||||
|
||||
mux.Handle("/messages", messages.NewMessagesAPI())
|
||||
mux.Handle("/message", messages.NewMessagesAPI())
|
||||
mux.Handle("/user", users.NewUsersAPI())
|
||||
mux.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("World!"))})
|
||||
|
||||
return mux
|
||||
|
@ -30,7 +30,10 @@ func postMessages(w http.ResponseWriter, r *http.Request) {
|
||||
err = insertMessage(msg)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
w.Write([]byte("OK"))
|
||||
}
|
||||
|
||||
func NewMessagesAPI() *http.ServeMux {
|
||||
|
@ -1 +1,48 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func getUsers(w http.ResponseWriter, r *http.Request) {
|
||||
users, err := getAllUsers()
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Add("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(users)
|
||||
}
|
||||
|
||||
func postUser(w http.ResponseWriter, r *http.Request) {
|
||||
var payload User
|
||||
err := json.NewDecoder(r.Body).Decode(&payload)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
user := User{
|
||||
Id: payload.Id,
|
||||
Name: payload.Name,
|
||||
}
|
||||
err = insertuser(user)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
w.Write([]byte("OK"))
|
||||
}
|
||||
|
||||
func NewUsersAPI() *http.ServeMux {
|
||||
initUsers()
|
||||
mux := http.NewServeMux()
|
||||
|
||||
mux.HandleFunc("GET /", getUsers)
|
||||
mux.HandleFunc("POST /", postUser)
|
||||
|
||||
return mux
|
||||
}
|
||||
|
@ -1,7 +1,39 @@
|
||||
package users
|
||||
|
||||
import "errors"
|
||||
|
||||
type User struct {
|
||||
Id uint64 `json:"id"`
|
||||
Id int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
var users []User
|
||||
|
||||
func initUsers() {
|
||||
users = make([]User, 0)
|
||||
}
|
||||
|
||||
func getAllUsers() ([]User, error) {
|
||||
return users, nil
|
||||
}
|
||||
|
||||
func getUserById(id int) (User, error) {
|
||||
if id > len(users) {
|
||||
return User{}, errors.New("User doesn't exist")
|
||||
}
|
||||
|
||||
return users[id], nil
|
||||
}
|
||||
|
||||
func insertuser(user User) error {
|
||||
if user.Name == "" {
|
||||
return errors.New("A name must be specified")
|
||||
}
|
||||
|
||||
newUser := User{
|
||||
Id: len(users),
|
||||
Name: user.Name,
|
||||
}
|
||||
users = append(users, newUser)
|
||||
return nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user