package proxy import ( "log" "net/http" "time" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/limiter" ) // Middleware untuk logging setiap request func LoggingMiddleware(c *fiber.Ctx) error { start := time.Now() err := c.Next() log.Printf("[%s] %s %s - %d %s in %v", time.Now().Format("2006-01-02 15:04:05"), c.Method(), c.Path(), c.Response().StatusCode(), http.StatusText(c.Response().StatusCode()), time.Since(start)) return err } // Middleware rate limiter: 200 requests per menit per IP func RateLimiter() func(*fiber.Ctx) error { return limiter.New(limiter.Config{ Max: 200, Expiration: 1 * time.Minute, KeyGenerator: func(c *fiber.Ctx) string { return c.IP() }, LimitReached: func(c *fiber.Ctx) error { return c.Status(http.StatusTooManyRequests).JSON(fiber.Map{ "error": "Rate limit exceeded", }) }, }) }