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 (*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
Click to show internal directories.
Click to hide internal directories.