2023-06-13 13:22:51 +00:00
|
|
|
package errors
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"github.com/labstack/echo/v4"
|
2024-12-16 13:47:40 +00:00
|
|
|
"gitea.pena/PenaSide/treasurer/internal/models"
|
2023-06-13 13:22:51 +00:00
|
|
|
)
|
|
|
|
|
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(),
|
|
|
|
})
|
|
|
|
}
|