diff --git a/main.go b/main.go index 00ac0f3..ba8e06b 100644 --- a/main.go +++ b/main.go @@ -3,11 +3,11 @@ package main import ( "fmt" "github.com/aldinokemal/go-whatsapp-web-multidevice/controllers" + "github.com/aldinokemal/go-whatsapp-web-multidevice/middleware" "github.com/aldinokemal/go-whatsapp-web-multidevice/services" "github.com/aldinokemal/go-whatsapp-web-multidevice/utils" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" - "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/template/html" _ "github.com/mattn/go-sqlite3" ) @@ -19,7 +19,7 @@ func main() { BodyLimit: 10 * 1024 * 1024, }) app.Static("/statics", "./statics") - app.Use(recover.New()) + app.Use(middleware.Recovery()) app.Use(logger.New()) db := utils.InitWaDB() diff --git a/middleware/recovery.go b/middleware/recovery.go new file mode 100644 index 0000000..64ebf4f --- /dev/null +++ b/middleware/recovery.go @@ -0,0 +1,31 @@ +package middleware + +import ( + "fmt" + "github.com/aldinokemal/go-whatsapp-web-multidevice/utils" + "github.com/gofiber/fiber/v2" +) + +func Recovery() fiber.Handler { + return func(ctx *fiber.Ctx) error { + defer func() { + err := recover() + if err != nil { + var res utils.ResponseData + + dt, ok := err.(utils.ValidationError) + if ok { + res.Code = 400 + res.Message = dt.Message + } else { + res.Code = 500 + res.Message = fmt.Sprintf("%s", err) + } + + _ = ctx.Status(res.Code).JSON(res) + } + }() + + return ctx.Next() + } +}