Files
files/internal/handler/helpers.go
2026-06-16 12:41:36 +03:00

45 lines
1011 B
Go

package handler
import (
"encoding/json"
"log/slog"
"net/http"
"strings"
)
func writeJSON(w http.ResponseWriter, status int, v any) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(status)
_ = json.NewEncoder(w).Encode(v)
}
func writeError(w http.ResponseWriter, status int, msg string) {
writeJSON(w, status, map[string]string{"error": msg})
}
func writeInternalError(w http.ResponseWriter, r *http.Request, err error, msg string) {
slog.Error("http error", "method", r.Method, "path", r.URL.Path, "err", err)
writeError(w, http.StatusInternalServerError, msg)
}
func decodeJSON(r *http.Request, v any) error {
defer r.Body.Close()
return json.NewDecoder(r.Body).Decode(v)
}
func csvHeader(r *http.Request, key string) []string {
raw := r.Header.Get(key)
if raw == "" {
return nil
}
parts := strings.Split(raw, ",")
out := make([]string, 0, len(parts))
for _, p := range parts {
p = strings.TrimSpace(p)
if p != "" {
out = append(out, p)
}
}
return out
}