mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 05:21:57 +00:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package middleware
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitlab.com/mbugroup/lti-api.git/internal/response"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/limiter"
|
|
)
|
|
|
|
func LimiterConfig() fiber.Handler {
|
|
return limiter.New(limiter.Config{
|
|
Max: 20,
|
|
Expiration: 15 * time.Minute,
|
|
LimitReached: func(c *fiber.Ctx) error {
|
|
return c.Status(fiber.StatusTooManyRequests).
|
|
JSON(response.Common{
|
|
Code: fiber.StatusTooManyRequests,
|
|
Status: "error",
|
|
Message: "Too many requests, please try again later",
|
|
})
|
|
},
|
|
SkipSuccessfulRequests: true,
|
|
})
|
|
}
|
|
|
|
func NewLimiter(max int, expiration time.Duration) fiber.Handler {
|
|
if max <= 0 {
|
|
max = 10
|
|
}
|
|
if expiration <= 0 {
|
|
expiration = time.Minute
|
|
}
|
|
return limiter.New(limiter.Config{
|
|
Max: max,
|
|
Expiration: expiration,
|
|
LimitReached: func(c *fiber.Ctx) error {
|
|
return c.Status(fiber.StatusTooManyRequests).
|
|
JSON(response.Common{
|
|
Code: fiber.StatusTooManyRequests,
|
|
Status: "error",
|
|
Message: "Too many requests, please try again later",
|
|
})
|
|
},
|
|
})
|
|
}
|