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

ratelimit

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: May 14, 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 {
	Allow     bool
	Limit     uint64
	Remaining uint64
	ResetTime time.Time
}

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"`
	Limit                    uint64        `mapstructure:"limit"`
	LimitBy                  string        `mapstructure:"limit_by"`
	WindowSize               time.Duration `mapstructure:"window_size"`
	HeaderLimit              string        `mapstructure:"header_limit"`
	HeaderRemaining          string        `mapstructure:"header_remaining"`
	HeaderReset              string        `mapstructure:"header_reset"`
	RejectedHTTPStatusCode   int           `mapstructure:"rejected_http_status_code"`
	RejectedHTTPContentType  string        `mapstructure:"rejected_http_content_type"`
	RejectedHTTPResponseBody string        `mapstructure:"rejected_http_response_body"`
	RedisID                  string        `mapstructure:"redis_id"`
}

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