45 lines
1.2 KiB
Go

package api
import (
"encoding/json"
"io"
"log/slog"
"net/http"
)
type ErrorResponse struct {
// Statustext of Errorcode
Status string `json:"status"`
Error string `json:"error"` // Error Message
}
func MountApiEndpoints(r *http.ServeMux) {
r.HandleFunc("POST /api/news/", createNewsItem)
r.HandleFunc("GET /api/news/", readNewsItems)
r.HandleFunc("GET /api/news/{id}", readNewsItem)
r.HandleFunc("PATCH /api/news/", updateNewsItem)
r.HandleFunc("DELETE /api/news/{id}", deleteNewsItem)
r.HandleFunc("POST /api/retailers/", createRetailerItem)
r.HandleFunc("GET /api/retailers/", readRetailerItems)
r.HandleFunc("GET /api/retailers/{id}", readRetailerItem)
r.HandleFunc("PATCH /api/retailers/", updateRetailerItem)
r.HandleFunc("DELETE /api/retailers/{id}", deleteRetailerItem)
}
func handleError(err error, statusCode int, rw http.ResponseWriter) {
slog.Warn("rest error", "error", err)
rw.Header().Add("Content-Type", "application/json")
rw.WriteHeader(statusCode)
json.NewEncoder(rw).Encode(ErrorResponse{
Status: http.StatusText(statusCode),
Error: err.Error(),
})
}
func decode(r io.Reader, val any) error {
dec := json.NewDecoder(r)
dec.DisallowUnknownFields()
return dec.Decode(val)
}