diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-09-23 10:17:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-23 10:17:51 -0400 |
commit | 2ca0e8f9a0f9863555a26e984cde15efff9ef8f8 (patch) | |
tree | daae1ee67b14a3d0a84424f2a304885d9e75ce2b /vendor/gopkg.in/throttled/throttled.v2/deprecated.go | |
parent | 6d62d65b2dc85855aabea036cbd44f6059e19d13 (diff) | |
download | chat-2ca0e8f9a0f9863555a26e984cde15efff9ef8f8.tar.gz chat-2ca0e8f9a0f9863555a26e984cde15efff9ef8f8.tar.bz2 chat-2ca0e8f9a0f9863555a26e984cde15efff9ef8f8.zip |
Updating golang dependancies (#4075)
Diffstat (limited to 'vendor/gopkg.in/throttled/throttled.v2/deprecated.go')
-rw-r--r-- | vendor/gopkg.in/throttled/throttled.v2/deprecated.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/gopkg.in/throttled/throttled.v2/deprecated.go b/vendor/gopkg.in/throttled/throttled.v2/deprecated.go new file mode 100644 index 000000000..f2c648a3e --- /dev/null +++ b/vendor/gopkg.in/throttled/throttled.v2/deprecated.go @@ -0,0 +1,73 @@ +package throttled + +import ( + "net/http" + "time" +) + +// DEPRECATED. Quota returns the number of requests allowed and the custom time window. +func (q Rate) Quota() (int, time.Duration) { + return q.count, q.period * time.Duration(q.count) +} + +// DEPRECATED. Q represents a custom quota. +type Q struct { + Requests int + Window time.Duration +} + +// DEPRECATED. Quota returns the number of requests allowed and the custom time window. +func (q Q) Quota() (int, time.Duration) { + return q.Requests, q.Window +} + +// DEPRECATED. The Quota interface defines the method to implement to describe +// a time-window quota, as required by the RateLimit throttler. +type Quota interface { + // Quota returns a number of requests allowed, and a duration. + Quota() (int, time.Duration) +} + +// DEPRECATED. Throttler is a backwards-compatible alias for HTTPLimiter. +type Throttler struct { + HTTPRateLimiter +} + +// DEPRECATED. Throttle is an alias for HTTPLimiter#Limit +func (t *Throttler) Throttle(h http.Handler) http.Handler { + return t.RateLimit(h) +} + +// DEPRECATED. RateLimit creates a Throttler that conforms to the given +// rate limits +func RateLimit(q Quota, vary *VaryBy, store GCRAStore) *Throttler { + count, period := q.Quota() + + if count < 1 { + count = 1 + } + if period <= 0 { + period = time.Second + } + + rate := Rate{period: period / time.Duration(count)} + limiter, err := NewGCRARateLimiter(store, RateQuota{rate, count - 1}) + + // This panic in unavoidable because the original interface does + // not support returning an error. + if err != nil { + panic(err) + } + + return &Throttler{ + HTTPRateLimiter{ + RateLimiter: limiter, + VaryBy: vary, + }, + } +} + +// DEPRECATED. Store is an alias for GCRAStore +type Store interface { + GCRAStore +} |