treasurer/internal/errors/http.go

36 lines
942 B
Go
Raw Normal View History

2023-06-13 13:22:51 +00:00
package errors
import (
"net/http"
"github.com/labstack/echo/v4"
"penahub.gitlab.yandexcloud.net/external/treasurer/internal/models"
)
2023-06-19 17:29:15 +00:00
const defaultHTTPCode = http.StatusInternalServerError
2023-06-13 13:22:51 +00:00
var httpStatuses = map[ErrorType]int{
ErrInternalError: http.StatusInternalServerError,
ErrInvalidArgs: http.StatusBadRequest,
ErrNoAccess: http.StatusForbidden,
ErrNotFound: http.StatusNotFound,
ErrMethodNotImplemented: http.StatusNotImplemented,
ErrConflict: http.StatusConflict,
ErrInsufficientFunds: http.StatusPaymentRequired,
}
func HTTP(ctx echo.Context, err Error) error {
status, ok := httpStatuses[err.Type()]
if !ok {
return ctx.JSON(http.StatusInternalServerError, models.ResponseErrorHTTP{
2023-06-19 17:29:15 +00:00
StatusCode: defaultHTTPCode,
2023-06-13 13:22:51 +00:00
Message: err.Error(),
})
}
return ctx.JSON(status, models.ResponseErrorHTTP{
StatusCode: status,
Message: err.Error(),
})
}