femMemos/memos.go
2023-01-04 09:57:15 +00:00

52 lines
1.1 KiB
Go

package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
type NewMemoResponse struct {
ID int64 `json:"ID"`
}
func httpGetMemos(w http.ResponseWriter, r *http.Request) {
memos := getMemos(DB)
w.Header().Set("Content-Type", "application/json")
err := json.NewEncoder(w).Encode(memos)
if err != nil {
log.Fatal(err)
}
}
func httpCreateMemo(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
w.WriteHeader(400)
fmt.Fprintf(w, "ParseForm() err: %v", err)
return
}
message := r.FormValue("message")
if len(message) == 0 {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(422)
json.NewEncoder(w).Encode(ErrorResponse{"Memo must have a Message"})
return
}
id := insertMemo(DB, message)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(NewMemoResponse{id})
}
func memosEndpoint(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
httpGetMemos(w, r)
case "POST":
httpCreateMemo(w, r)
default:
w.WriteHeader(405)
fmt.Fprintf(w, "HTTP method must be GET or POST")
}
}