31 lines
808 B
Go
31 lines
808 B
Go
package errors
|
|
|
|
import (
|
|
"gitea.pena/PenaSide/treasurer/internal/models"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
const defaultHTTPCode = fiber.StatusInternalServerError
|
|
|
|
var httpStatuses = map[ErrorType]int{
|
|
ErrInternalError: fiber.StatusInternalServerError,
|
|
ErrInvalidArgs: fiber.StatusBadRequest,
|
|
ErrNoAccess: fiber.StatusForbidden,
|
|
ErrNotFound: fiber.StatusNotFound,
|
|
ErrMethodNotImplemented: fiber.StatusNotImplemented,
|
|
ErrConflict: fiber.StatusConflict,
|
|
ErrInsufficientFunds: fiber.StatusPaymentRequired,
|
|
}
|
|
|
|
func HTTP(ctx *fiber.Ctx, err Error) error {
|
|
status, ok := httpStatuses[err.Type()]
|
|
if !ok {
|
|
status = defaultHTTPCode
|
|
}
|
|
|
|
return ctx.Status(status).JSON(models.ResponseErrorHTTP{
|
|
StatusCode: status,
|
|
Message: err.Error(),
|
|
})
|
|
}
|