mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-01-12 22:43:22 +08:00
39 lines
1.0 KiB
Go
39 lines
1.0 KiB
Go
package errorhandler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/cockroachdb/errors"
|
|
"github.com/gaze-network/indexer-network/common/errs"
|
|
"github.com/gaze-network/indexer-network/pkg/logger"
|
|
"github.com/gaze-network/indexer-network/pkg/logger/slogx"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
// New setup error handler middleware
|
|
func New() fiber.Handler {
|
|
return func(ctx *fiber.Ctx) error {
|
|
err := ctx.Next()
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
if e := new(errs.PublicError); errors.As(err, &e) {
|
|
return errors.WithStack(ctx.Status(http.StatusBadRequest).JSON(fiber.Map{
|
|
"error": e.Message(),
|
|
}))
|
|
}
|
|
if e := new(fiber.Error); errors.As(err, &e) {
|
|
return errors.WithStack(ctx.Status(e.Code).JSON(fiber.Map{
|
|
"error": e.Error(),
|
|
}))
|
|
}
|
|
logger.ErrorContext(ctx.UserContext(), "Something went wrong, api error",
|
|
slogx.String("event", "api_error"),
|
|
slogx.Error(err),
|
|
)
|
|
return errors.WithStack(ctx.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"error": "Internal Server Error",
|
|
}))
|
|
}
|
|
}
|