ratelimit

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 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