medol-be/app/middleware/register.middleware.go

69 lines
1.9 KiB
Go
Raw Normal View History

2024-03-05 19:15:53 +00:00
package middleware
import (
"go-humas-be/config/config"
"go-humas-be/utils"
"time"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/compress"
2024-04-03 17:43:16 +00:00
"github.com/gofiber/fiber/v2/middleware/cors"
2024-03-05 19:15:53 +00:00
"github.com/gofiber/fiber/v2/middleware/limiter"
"github.com/gofiber/fiber/v2/middleware/monitor"
"github.com/gofiber/fiber/v2/middleware/pprof"
"github.com/gofiber/fiber/v2/middleware/recover"
)
// Middleware is a struct that contains all the middleware functions
type Middleware struct {
App *fiber.App
Cfg *config.Config
}
func NewMiddleware(app *fiber.App, cfg *config.Config) *Middleware {
return &Middleware{
App: app,
Cfg: cfg,
}
}
// Register registers all the middleware functions
func (m *Middleware) Register() {
// Add Extra Middlewares
m.App.Use(limiter.New(limiter.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Limiter.Enable),
Max: m.Cfg.Middleware.Limiter.Max,
Expiration: m.Cfg.Middleware.Limiter.Expiration * time.Second,
}))
m.App.Use(compress.New(compress.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Compress.Enable),
Level: m.Cfg.Middleware.Compress.Level,
}))
m.App.Use(recover.New(recover.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Recover.Enable),
}))
m.App.Use(pprof.New(pprof.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Pprof.Enable),
}))
2024-04-03 17:43:16 +00:00
m.App.Use(cors.New(cors.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Cors.Enable),
AllowOrigins: "*",
AllowHeaders: "Origin, Content-Type, Accept",
}))
2024-03-05 19:15:53 +00:00
//m.App.Use(filesystem.New(filesystem.Config{
// Next: utils.IsEnabled(m.Cfg.Middleware.FileSystem.Enable),
// Root: http.Dir(m.Cfg.Middleware.FileSystem.Root),
// Browse: m.Cfg.Middleware.FileSystem.Browse,
// MaxAge: m.Cfg.Middleware.FileSystem.MaxAge,
//}))
m.App.Get(m.Cfg.Middleware.Monitor.Path, monitor.New(monitor.Config{
Next: utils.IsEnabled(m.Cfg.Middleware.Monitor.Enable),
}))
}