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 ¶
- func AutoBan(opts ...AutoBanOption) gin.HandlerFunc
- func GetClient() *redis.Client
- func GinRateLimit(limiter GinRateLimiter, methods []string) gin.HandlerFunc
- func SetClient(c *redis.Client)
- func SetGlobalPrefix(prefix string)
- type AutoBanOption
- func AutoBanWithAutobanPrefix(prefix string) AutoBanOption
- func AutoBanWithAutobannedPrefix(prefix string) AutoBanOption
- func AutoBanWithBanDuration(duration time.Duration) AutoBanOption
- func AutoBanWithRate(rate *Rate) AutoBanOption
- func AutoBanWithResponseStatus(status int) AutoBanOption
- func AutoBanWithStatuses(statuses ...int) AutoBanOption
- type GinRateLimiter
- type Rate
- type RateLimiter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AutoBan ¶ added in v1.10.0
func AutoBan(opts ...AutoBanOption) gin.HandlerFunc
func GinRateLimit ¶
func GinRateLimit(limiter GinRateLimiter, methods []string) gin.HandlerFunc
func SetGlobalPrefix ¶ added in v1.7.0
func SetGlobalPrefix(prefix string)
SetGlobalPrefix sets a global prefix for all rate limiter keys. This can be useful to avoid key collisions in Redis when using multiple applications or services. The prefix will be automatically suffixed with a colon if it does not already end with one. Remove the global prefix if an empty string is provided.
Types ¶
type AutoBanOption ¶ added in v1.11.0
type AutoBanOption func(*autoBanOption)
func AutoBanWithAutobanPrefix ¶ added in v1.12.0
func AutoBanWithAutobanPrefix(prefix string) AutoBanOption
func AutoBanWithAutobannedPrefix ¶ added in v1.12.0
func AutoBanWithAutobannedPrefix(prefix string) AutoBanOption
func AutoBanWithBanDuration ¶ added in v1.11.0
func AutoBanWithBanDuration(duration time.Duration) AutoBanOption
func AutoBanWithRate ¶ added in v1.11.0
func AutoBanWithRate(rate *Rate) AutoBanOption
func AutoBanWithResponseStatus ¶ added in v1.11.0
func AutoBanWithResponseStatus(status int) AutoBanOption
func AutoBanWithStatuses ¶ added in v1.11.0
func AutoBanWithStatuses(statuses ...int) AutoBanOption
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.