ratelimit

package
v2.0.0-...-e5a2643 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2021 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bucket

type Bucket struct {
	sync.Mutex
	Key       string
	Remaining int
	// contains filtered or unexported fields
}

Bucket represents a ratelimit bucket, each bucket gets ratelimited individually (-global ratelimits).

func (*Bucket) Release

func (b *Bucket) Release(headers http.Header) error

Release unlocks the bucket and reads the headers to update the buckets ratelimit info and locks up the whole thing in case if there's a global ratelimit.

type RateLimiter

type RateLimiter struct {
	sync.Mutex
	// contains filtered or unexported fields
}

RateLimiter holds all ratelimit buckets.

func NewRatelimiter

func NewRatelimiter() *RateLimiter

NewRatelimiter returns a new RateLimiter.

func (*RateLimiter) GetBucket

func (r *RateLimiter) GetBucket(key string) *Bucket

GetBucket retrieves or creates a bucket.

func (*RateLimiter) GetWaitTime

func (r *RateLimiter) GetWaitTime(b *Bucket, minRemaining int) time.Duration

GetWaitTime returns the duration you should wait for a Bucket.

func (*RateLimiter) LockBucket

func (r *RateLimiter) LockBucket(bucketID string) *Bucket

LockBucket Locks until a request can be made.

func (*RateLimiter) LockBucketObject

func (r *RateLimiter) LockBucketObject(b *Bucket) *Bucket

LockBucketObject Locks an already resolved bucket until a request can be made.

Jump to

Keyboard shortcuts

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