feat: add stuff for users
This commit is contained in:
parent
b54a862e23
commit
b104e417b7
@ -4,6 +4,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"dacremont.xyz/learnrest/api/messages"
|
"dacremont.xyz/learnrest/api/messages"
|
||||||
|
"dacremont.xyz/learnrest/api/users"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Api struct {}
|
type Api struct {}
|
||||||
@ -11,7 +12,8 @@ type Api struct {}
|
|||||||
func NewApi () *http.ServeMux {
|
func NewApi () *http.ServeMux {
|
||||||
mux := http.NewServeMux()
|
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!"))})
|
mux.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("World!"))})
|
||||||
|
|
||||||
return mux
|
return mux
|
||||||
|
@ -30,7 +30,10 @@ func postMessages(w http.ResponseWriter, r *http.Request) {
|
|||||||
err = insertMessage(msg)
|
err = insertMessage(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte("OK"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMessagesAPI() *http.ServeMux {
|
func NewMessagesAPI() *http.ServeMux {
|
||||||
|
@ -1 +1,48 @@
|
|||||||
package users
|
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
|
package users
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
Id uint64 `json:"id"`
|
Id int `json:"id"`
|
||||||
Name string `json:"name"`
|
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