ratelimiting

package
v0.0.0-...-883ae94 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AllowResult

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

type Limiter

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

type LocalAsyncRedisLimiter

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

func NewLocalAsyncRedisLimiter

func NewLocalAsyncRedisLimiter(client redis.UniversalClient, options Options) *LocalAsyncRedisLimiter

func (*LocalAsyncRedisLimiter) TryAcquire

func (r *LocalAsyncRedisLimiter) TryAcquire(token int64) bool

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
	Limit            uint64
	LimitBy          string
	WindowSize       time.Duration
	HeaderLimit      string
	HeaderRemaining  string
	HeaderReset      string
	HTTPStatusCode   int
	HTTPContentType  string
	HTTPResponseBody string
	RedisID          string
}

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