package rest import ( "errors" "net/http" "github.com/emochka2007/block-accounting/internal/interface/rest/controllers" "github.com/emochka2007/block-accounting/internal/usecase/interactors/jwt" ) var ( ErrorBadPathParams = errors.New("bad path params") ) type apiError struct { Code int `json:"code"` Message string `json:"message"` } func buildApiError(code int, message string) apiError { return apiError{ Code: code, Message: message, } } func mapError(err error) apiError { switch { // server error case errors.Is(err, ErrorBadPathParams): return buildApiError(http.StatusBadRequest, "Invalid Path Params") // auth controller errors case errors.Is(err, controllers.ErrorAuthInvalidMnemonic): return buildApiError(http.StatusBadRequest, "Invalid Mnemonic") case errors.Is(err, controllers.ErrorTokenRequired): return buildApiError(http.StatusUnauthorized, "Token Required") // jwt-related errors case errors.Is(err, jwt.ErrorTokenExpired): return buildApiError(http.StatusUnauthorized, "Token Expired") case errors.Is(err, jwt.ErrorInvalidTokenClaims): return buildApiError(http.StatusUnauthorized, "Invalid Token") default: return buildApiError(http.StatusInternalServerError, "Internal Server Error") } }