1
0
Fork 1
mirror of https://github.com/git-pkgs/proxy.git synced 2026-06-02 16:48:16 -04:00
pkg-proxy/internal/server/errors.go

42 lines
1.3 KiB
Go
Raw Permalink Normal View History

package server
import (
"encoding/json"
"net/http"
)
// Error codes returned in API error responses. These are stable identifiers
// that clients can match on; the message text is for humans and may change.
const (
ErrCodeBadRequest = "BAD_REQUEST"
ErrCodeNotFound = "NOT_FOUND"
ErrCodeUpstream = "UPSTREAM_ERROR"
ErrCodeInternal = "INTERNAL_ERROR"
)
// ErrorResponse is the JSON body returned for API errors.
type ErrorResponse struct {
Code string `json:"code"`
Message string `json:"message"`
}
// writeError sends a JSON error response with the given status, code and
// user-facing message. Internal error details should be logged separately
// by the caller, never passed as the message.
func writeError(w http.ResponseWriter, status int, code, message string) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(status)
_ = json.NewEncoder(w).Encode(ErrorResponse{Code: code, Message: message})
}
func badRequest(w http.ResponseWriter, message string) {
writeError(w, http.StatusBadRequest, ErrCodeBadRequest, message)
}
func notFound(w http.ResponseWriter, message string) {
writeError(w, http.StatusNotFound, ErrCodeNotFound, message)
}
func internalError(w http.ResponseWriter, message string) {
writeError(w, http.StatusInternalServerError, ErrCodeInternal, message)
}