Versions in this module Expand all Collapse all v1 v1.0.0 Nov 4, 2018 Changes in this version + var ErrInvalidDuration = errors.New("duration must be > 0s") + var ErrInvalidLimitNumber = errors.New("limit must be > 0") + var ErrMalformedLimit = errors.New("malformed string") + var ErrMalformedLimitNumber = errors.New("malformed limit") + func Middleware(l Limiter) func(http.Handler) http.Handler + type Limit struct + Dur time.Duration + Global bool + Limit int + func MustParseLimit(limit string) Limit + func MustParseLimits(limits []string) []Limit + func ParseLimit(limit string) (Limit, error) + func ParseLimits(limits []string) ([]Limit, error) + func (l *Limit) String() string + type Limiter interface + Limit func(ip string) bool + type NopLimiter struct + func (l *NopLimiter) Limit(ip string) bool + type RedisLimiter struct + LimitOnError bool + Limits []Limit + OnError func(ip string, err error) + Pool redisPool + func NewRedisLimiter(pool redisPool, limits []Limit) *RedisLimiter + func (l *RedisLimiter) Limit(ip string) bool + type WhitelistedLimiter struct + Limiter Limiter + OnWhitelist func(ip string) + Whitelist []string + func NewWhitelistedLimiter(limiter Limiter, whitelist []string) *WhitelistedLimiter + func (w *WhitelistedLimiter) Limit(ip string) bool