Archived
Template
1
0
This repository has been archived on 2023-12-20. You can view files and clone it, but cannot push or open issues or pull requests.
Files
golang-base-project/middleware/throttle.go
2022-01-09 14:22:43 +01:00

21 lines
576 B
Go

package middleware
import (
"github.com/gin-gonic/gin"
"github.com/ulule/limiter/v3"
middlewareGin "github.com/ulule/limiter/v3/drivers/middleware/gin"
"github.com/ulule/limiter/v3/drivers/store/memory"
"time"
)
// Throttle middleware takes a limit per minute and blocks any additional requests that go over this limit
func Throttle(limit int) gin.HandlerFunc {
store := memory.NewStore()
// Create a new middleware with the limiter instance.
return middlewareGin.NewMiddleware(limiter.New(store, limiter.Rate{
Period: time.Minute,
Limit: int64(limit),
}))
}