package api import ( "encoding/json" "net/http" "time" ) func jsonMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") next.ServeHTTP(w, r) }) } func decodeJSON(r *http.Request, dst any) error { defer r.Body.Close() dec := json.NewDecoder(r.Body) dec.DisallowUnknownFields() return dec.Decode(dst) } func writeJSON(w http.ResponseWriter, status int, value any) { w.WriteHeader(status) _ = json.NewEncoder(w).Encode(value) } func writeError(w http.ResponseWriter, status int, msg string) { writeJSON(w, status, map[string]string{"error": msg}) } func nowUTC() time.Time { return time.Now().UTC().Truncate(time.Second) }