diff options
| author | 2026-05-02 14:29:55 +0700 | |
|---|---|---|
| committer | 2026-05-02 14:29:55 +0700 | |
| commit | ca1f36376865cb2a20923aa62fdff3ee217abde3 (patch) | |
| tree | 2e3676489327505dd2b4d53023ca0da6fc2dc5a2 /internal/router/rate-limiters.go | |
| parent | 3898baa47faf268864ecac3699f7e98c6cac01a4 (diff) | |
| download | web-ca1f36376865cb2a20923aa62fdff3ee217abde3.tar.gz web-ca1f36376865cb2a20923aa62fdff3ee217abde3.zip | |
feat: implement rate limiting
Diffstat (limited to 'internal/router/rate-limiters.go')
| -rw-r--r-- | internal/router/rate-limiters.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/router/rate-limiters.go b/internal/router/rate-limiters.go new file mode 100644 index 0000000..b43581d --- /dev/null +++ b/internal/router/rate-limiters.go @@ -0,0 +1,37 @@ +package router + +import ( + "time" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/limiter" +) + +var ( + RateLimiterStrict = limiter.New(limiter.Config{ + Max: 5, + Expiration: time.Minute, + KeyGenerator: func(c *fiber.Ctx) string { return c.IP() }, + LimitReached: func(c *fiber.Ctx) error { + return c.Status(fiber.StatusTooManyRequests).SendString("rate limit") + }, + }) + + RateLimiterMedium = limiter.New(limiter.Config{ + Max: 30, + Expiration: time.Minute, + KeyGenerator: func(c *fiber.Ctx) string { return c.IP() }, + LimitReached: func(c *fiber.Ctx) error { + return c.Status(fiber.StatusTooManyRequests).SendString("rate limit") + }, + }) + + RateLimiterLoose = limiter.New(limiter.Config{ + Max: 60, + Expiration: time.Minute, + KeyGenerator: func(c *fiber.Ctx) string { return c.IP() }, + LimitReached: func(c *fiber.Ctx) error { + return c.Status(fiber.StatusTooManyRequests).SendString("rate limit") + }, + }) +) |