Help us shape the future of Go! Take the 2026 Go Developer Survey

ratelimit

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2025 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PutAllowResult added in v0.4.0

func PutAllowResult(result *AllowResult)

PutAllowResult returns an AllowResult to the pool

Types

type AllowResult

type AllowResult struct {
	ResetTime time.Time
	Limit     uint64
	Remaining uint64
	Allow     bool
}

func GetAllowResult added in v0.4.0

func GetAllowResult() *AllowResult

GetAllowResult gets an AllowResult from the pool

type Limiter

type Limiter interface {
	Allow(ctx context.Context, key string) *AllowResult
}

type LocalLimiter

type LocalLimiter struct {
	// contains filtered or unexported fields
}

func NewLocalLimiter

func NewLocalLimiter(options Options) *LocalLimiter

func (*LocalLimiter) Allow

func (l *LocalLimiter) Allow(ctx context.Context, key string) *AllowResult

type Options

type Options struct {
	Strategy                 StrategyMode  `mapstructure:"strategy"`
	LimitBy                  string        `mapstructure:"limit_by"`
	HeaderLimit              string        `mapstructure:"header_limit"`
	HeaderRemaining          string        `mapstructure:"header_remaining"`
	HeaderReset              string        `mapstructure:"header_reset"`
	RejectedHTTPContentType  string        `mapstructure:"rejected_http_content_type"`
	RejectedHTTPResponseBody string        `mapstructure:"rejected_http_response_body"`
	RedisID                  string        `mapstructure:"redis_id"`
	Limit                    uint64        `mapstructure:"limit"`
	WindowSize               time.Duration `mapstructure:"window_size"`
	RejectedHTTPStatusCode   int           `mapstructure:"rejected_http_status_code"`
}

type RateLimitingMiddleware

type RateLimitingMiddleware struct {
	// contains filtered or unexported fields
}

func NewMiddleware

func NewMiddleware(options Options) (*RateLimitingMiddleware, error)

func (*RateLimitingMiddleware) ServeHTTP

type RedisLimiter

type RedisLimiter struct {
	// contains filtered or unexported fields
}

func NewRedisLimiter

func NewRedisLimiter(client redis.UniversalClient, options Options) *RedisLimiter

func (*RedisLimiter) Allow

func (l *RedisLimiter) Allow(ctx context.Context, key string) *AllowResult

type StrategyMode

type StrategyMode string
const (
	Local           StrategyMode = "local"
	Redis           StrategyMode = "redis"
	LocalAsyncRedis StrategyMode = "local_async_redis" // nolint
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL