mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 12:17:24 +00:00
78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package middleware
|
|
|
|
import (
|
|
"errors"
|
|
"nysoure/server/model"
|
|
|
|
"github.com/gofiber/fiber/v3/log"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
func ErrorHandler(c fiber.Ctx) error {
|
|
err := c.Next()
|
|
if err != nil {
|
|
var requestErr *model.RequestError
|
|
var unauthorizedErr *model.UnAuthorizedError
|
|
var notFoundErr *model.NotFoundError
|
|
var fiberErr *fiber.Error
|
|
if errors.As(err, &requestErr) {
|
|
log.Error("Request Error: ", err)
|
|
return c.Status(fiber.StatusBadRequest).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: requestErr.Error(),
|
|
})
|
|
} else if errors.As(err, &unauthorizedErr) {
|
|
log.Error("Unauthorized Error: ", err)
|
|
return c.Status(fiber.StatusUnauthorized).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: unauthorizedErr.Error(),
|
|
})
|
|
} else if errors.As(err, ¬FoundErr) {
|
|
log.Error("Not Found Error: ", err)
|
|
return c.Status(fiber.StatusNotFound).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: notFoundErr.Error(),
|
|
})
|
|
} else if errors.Is(err, fiber.ErrNotFound) {
|
|
return c.Status(fiber.StatusNotFound).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: "Not found",
|
|
})
|
|
} else if errors.Is(err, fiber.ErrMethodNotAllowed) {
|
|
return c.Status(fiber.StatusMethodNotAllowed).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: "Method not allowed",
|
|
})
|
|
} else if errors.As(err, &fiberErr) && fiberErr.Message != "" {
|
|
return c.Status(fiberErr.Code).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: fiberErr.Message,
|
|
})
|
|
} else {
|
|
var fiberErr *fiber.Error
|
|
if errors.As(err, &fiberErr) {
|
|
if fiberErr.Code == fiber.StatusNotFound {
|
|
return c.Status(fiber.StatusNotFound).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: "Not found",
|
|
})
|
|
}
|
|
}
|
|
return c.Status(fiber.StatusInternalServerError).JSON(model.Response[any]{
|
|
Success: false,
|
|
Data: nil,
|
|
Message: "Internal server error",
|
|
})
|
|
}
|
|
}
|
|
return nil
|
|
}
|