Documentation ¶
Overview ¶
Package rlimiter is for rate limit on heavy endpoints
import "github.com/vanng822/rlimiter" grbinder.BindVerb(group.Group("/login", rlimiter.GinRateLimit(
rlimiter.NewIPRateLimiter( &rlimiter.Rate{Window: 10 * time.Second, Limit: 10}, "api.login"), []string{"POST"})), &loginHandler{})
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // Client for connecting to redis database Client = redis.NewClient(&redis.Options{ Addr: "localhost:6379", DB: 0, }) )
Functions ¶
func GinRateLimit ¶
func GinRateLimit(limiter GinRateLimiter, methods []string) gin.HandlerFunc
Types ¶
type GinRateLimiter ¶
type GinRateLimiter interface { RateLimiter Key(c *gin.Context) string }
func NewIPRateLimiter ¶
func NewIPRateLimiter(rate *Rate, prefix string) GinRateLimiter
func NewParamRateLimiter ¶
func NewParamRateLimiter(rate *Rate, prefix, paramName string) GinRateLimiter
func NewPathRateLimiter ¶
func NewPathRateLimiter(rate *Rate, prefix string) GinRateLimiter
type Rate ¶
Rate define window as describe in https://redis.io/commands/incr#pattern-rate-limiter-2
type RateLimiter ¶
func NewRateLimiter ¶
func NewRateLimiter(rate *Rate, prefix string) RateLimiter
Click to show internal directories.
Click to hide internal directories.