mirror of
https://github.com/JustKato/FreePad.git
synced 2026-02-23 15:50:46 +02:00
+ Working on the API Rate limiting
This commit is contained in:
34
lib/controllers/controllers_ratelimiter.go
Normal file
34
lib/controllers/controllers_ratelimiter.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/JustKato/FreePad/lib/helper"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/ulule/limiter/v3"
|
||||
"github.com/ulule/limiter/v3/drivers/store/memory"
|
||||
|
||||
mgin "github.com/ulule/limiter/v3/drivers/middleware/gin"
|
||||
)
|
||||
|
||||
// Apply the rate limiter to the gin Engine
|
||||
func DoRateLimit(router *gin.Engine) {
|
||||
|
||||
// Initialize the rate limiter
|
||||
rate := limiter.Rate{
|
||||
Period: 5 * time.Minute,
|
||||
Limit: int64(helper.GetApiBanLimit()),
|
||||
}
|
||||
|
||||
// Initialize the memory storage
|
||||
store := memory.NewStore()
|
||||
|
||||
// Initialize the limiter instance
|
||||
instance := limiter.New(store, rate)
|
||||
|
||||
// Create the gin middleware
|
||||
middleWare := mgin.NewMiddleware(instance)
|
||||
|
||||
// use the middleware in gin
|
||||
router.Use(middleWare)
|
||||
}
|
||||
Reference in New Issue
Block a user