Files
payouts/internal/api/common/error.go
2026-03-19 00:09:25 +03:00

37 lines
802 B
Go

package common
import (
"encoding/json"
"fmt"
"log/slog"
"net/http"
"strings"
"unicode"
"unicode/utf8"
"payouts/internal/models"
)
func Reason(reason string, params ...any) slog.Attr {
return slog.String("reason", fmt.Sprintf(reason, params...))
}
func ErrorResponse(w http.ResponseWriter, message string, err error, status int, logOpts ...any) {
r, size := utf8.DecodeRuneInString(message)
errorMsg := string(unicode.ToUpper(r)) + strings.ToLower(message[size:])
logFields := logOpts
if err != nil {
logFields = append([]any{slog.String("error", err.Error())}, logOpts...)
}
slog.Error(errorMsg, logFields...)
w.Header().Set("Content-type", "application/json")
w.WriteHeader(status)
json.NewEncoder(w).Encode(&models.ErrorResp{
Message: errorMsg,
Status: status,
})
}