package httpx import ( "encoding/json" "io" "net/http" "strings" ) func JSON(w http.ResponseWriter, status int, v any) { w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(status) _ = json.NewEncoder(w).Encode(v) } func Error(w http.ResponseWriter, status int, msg string) { JSON(w, status, map[string]any{"error": msg}) } func DecodeJSON(r *http.Request, dst any, max int64) error { dec := json.NewDecoder(io.LimitReader(r.Body, max)) dec.DisallowUnknownFields() return dec.Decode(dst) } func SameOrigin(r *http.Request) bool { origin := r.Header.Get("Origin") if origin == "" { return true } host := r.Host return strings.HasSuffix(origin, "://"+host) }