From 8526739066ccb00ccd24b74650a7d7b284442985 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Thu, 21 Jun 2018 13:10:40 -0700 Subject: MM-10934 Update server dependencies. (#8981) * Changing throttled import path. * Upgrading dependencies. --- .../github.com/throttled/throttled/deprecated.go | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 vendor/github.com/throttled/throttled/deprecated.go (limited to 'vendor/github.com/throttled/throttled/deprecated.go') diff --git a/vendor/github.com/throttled/throttled/deprecated.go b/vendor/github.com/throttled/throttled/deprecated.go new file mode 100644 index 000000000..f2c648a3e --- /dev/null +++ b/vendor/github.com/throttled/throttled/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 +} -- cgit v1.2.3-1-g7c22