Files
thamanyah/cms/internal/handlers/handlers.go
T
FahdShalhoub 0dae4abb74
Build, Push and Deploy CMS / build-push-deploy (push) Successful in 1m52s
CHANGE: Change Error To ProblemDetails
2026-08-16 23:21:09 +03:00

45 lines
1.3 KiB
Go

package handlers
import (
"encoding/json"
"log"
"net/http"
)
func Health(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusOK, map[string]string{"status": "ok"})
}
// problemDetails is an error body in the RFC 9457 "Problem Details for HTTP
// APIs" format. Type stays "about:blank" — the value RFC 9457 defines for
// problems with no dedicated documentation URI — which is why Title carries
// the plain HTTP status phrase and Detail carries the occurrence-specific
// explanation.
type problemDetails struct {
Type string `json:"type"`
Title string `json:"title"`
Status int `json:"status"`
Detail string `json:"detail,omitempty"`
}
func writeJSON(w http.ResponseWriter, status int, body any) {
writeJSONContent(w, "application/json", status, body)
}
func writeProblem(w http.ResponseWriter, status int, detail string) {
writeJSONContent(w, "application/problem+json", status, problemDetails{
Type: "about:blank",
Title: http.StatusText(status),
Status: status,
Detail: detail,
})
}
func writeJSONContent(w http.ResponseWriter, contentType string, status int, body any) {
w.Header().Set("Content-Type", contentType)
w.WriteHeader(status)
if err := json.NewEncoder(w).Encode(body); err != nil {
log.Printf("Something Went Wrong Writing The Response: %s", err)
}
}