package middleware import ( "time" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/limiter" ) func RateLimiter() fiber.Handler { return limiter.New(limiter.Config{ Max: 30, Expiration: 1 * time.Minute, KeyGenerator: func(c *fiber.Ctx) string { if ip := c.Get("X-Real-IP"); ip != "" { return ip } return c.IP() }, LimitReached: func(c *fiber.Ctx) error { return c.Status(fiber.StatusTooManyRequests).JSON(fiber.Map{ "error": "Rate limit exceeded. Try again later.", }) }, }) }