Documentation
¶
Overview ¶
Package ratelimit grants a limited number of permits per key and period. The count lives in Redis, so every server instance draws on the same quota. It throttles sending verification codes, registrations per client IP and ticket creation.
Index ¶
Constants ¶
const ( // Unknown means not initialized state. Unknown = iota // Allowed means allowed state. Allowed // HitQuota means this request exactly hit the quota. HitQuota // OverQuota means passed the quota. OverQuota )
Variables ¶
var ( // ErrUnknownCode is an error that represents unknown status code. ErrUnknownCode = errors.New("unknown status code") )
Functions ¶
This section is empty.
Types ¶
type PeriodLimit ¶
type PeriodLimit struct {
// contains filtered or unexported fields
}
A PeriodLimit is used to limit requests during a period of time.
func NewPeriodLimit ¶
func NewPeriodLimit(period, quota int, limitStore *redis.Client, keyPrefix string, opts ...PeriodOption) *PeriodLimit
NewPeriodLimit returns a PeriodLimit with given parameters.
func (*PeriodLimit) ParsePermitState ¶
func (h *PeriodLimit) ParsePermitState(code int) bool
ParsePermitState returns the permit state by the code.
type PeriodOption ¶
type PeriodOption func(l *PeriodLimit)
PeriodOption defines the method to customize a PeriodLimit.
func Align ¶
func Align() PeriodOption
Align returns a func to customize a PeriodLimit with alignment. For example, if we want to limit end users with 5 sms verification messages every day, we need to align with the local timezone and the start of the day.