You've already forked golang-base-project
Initial commit
This commit is contained in:
25
middleware/throttle.go
Normal file
25
middleware/throttle.go
Normal file
@ -0,0 +1,25 @@
|
||||
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"
|
||||
"log"
|
||||
)
|
||||
|
||||
func Throttle(limit int) gin.HandlerFunc {
|
||||
// Define a limit rate to 3 requests per minute.
|
||||
rate, err := limiter.NewRateFromFormatted("5-M")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
store := memory.NewStore()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Create a new middleware with the limiter instance.
|
||||
return middlewareGin.NewMiddleware(limiter.New(store, rate))
|
||||
}
|
Reference in New Issue
Block a user