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

26 lines
584 B
Go
Raw Normal View History

2021-12-12 14:56:13 +01:00
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))
}