ratelimit

package
v0.0.0-...-2a7283e Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LeakyBucketOptions

type LeakyBucketOptions struct {
	MaxTokens int           // Maximum number of tokens in the bucket
	Interval  time.Duration // Time interval for token replenishment
}

LeakyBucketOptions defines options for the leaky bucket algorithm.

type QuotaOptions

type QuotaOptions struct {
	MaxRequests int           // Maximum number of requests allowed
	Period      time.Duration // Time period for the quota
}

QuotaOptions defines options for quota-based rate limiting.

type RateLimit

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

RateLimit provides rate limiting functionality using Redis.

func New

func New(redisClient *redis.Client) *RateLimit

New creates a new RateLimit instance.

func (*RateLimit) CheckRateLimits

func (rl *RateLimit) CheckRateLimits(ctx context.Context, user uint64, config RateLimitConfig) (*RateLimitStatus, error)

CheckRateLimits checks all rate limits in a single call and returns remaining counts Returns a RateLimitStatus with the allowed flag and remaining counts for all limits

func (*RateLimit) GetRateLimitStatus

func (rl *RateLimit) GetRateLimitStatus(ctx context.Context, user uint64, config RateLimitConfig) (*RateLimitStatus, error)

GetRateLimitStatus retrieves the current usage status of daily and monthly rate limits without consuming any of the limits.

type RateLimitConfig

type RateLimitConfig struct {
	BurstLimit           uint64 // Maximum burst requests
	BurstDurationSeconds uint64 // Duration for burst window in seconds
	DailyLimit           uint64 // Maximum daily requests
	MonthlyLimit         uint64 // Maximum monthly requests
}

RateLimitConfig defines all rate limit thresholds

type RateLimitStatus

type RateLimitStatus struct {
	Allowed          bool   // Whether the current request is allowed
	RemainingBurst   uint64 // Remaining burst requests
	RemainingDaily   uint64 // Remaining daily requests
	RemainingMonthly uint64 // Remaining monthly requests
}

RateLimitStatus contains information about remaining limits

Jump to

Keyboard shortcuts

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