diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-05-12 15:08:58 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-05-12 16:37:29 -0400 |
commit | 84d2482ddbff9564c9ad75b2d30af66e3ddfd44d (patch) | |
tree | 8bfa567d2b6381f4a996ada2deff8a16aa85a3ac /vendor/gopkg.in/throttled/throttled.v1/store.go | |
parent | d1efb66ad7b017f0fbfe6f0c20843b30f396e504 (diff) | |
download | chat-84d2482ddbff9564c9ad75b2d30af66e3ddfd44d.tar.gz chat-84d2482ddbff9564c9ad75b2d30af66e3ddfd44d.tar.bz2 chat-84d2482ddbff9564c9ad75b2d30af66e3ddfd44d.zip |
Updating go depencancies. Switching to go1.6 vendoring (#2949)
Diffstat (limited to 'vendor/gopkg.in/throttled/throttled.v1/store.go')
-rw-r--r-- | vendor/gopkg.in/throttled/throttled.v1/store.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vendor/gopkg.in/throttled/throttled.v1/store.go b/vendor/gopkg.in/throttled/throttled.v1/store.go new file mode 100644 index 000000000..760fe2b69 --- /dev/null +++ b/vendor/gopkg.in/throttled/throttled.v1/store.go @@ -0,0 +1,31 @@ +package throttled + +import ( + "errors" + "time" +) + +// The error returned if the key does not exist in the Store. +var ErrNoSuchKey = errors.New("throttled: no such key") + +// Store is the interface to implement to store the RateLimit state (number +// of requests per key, time-to-live or creation timestamp). +type Store interface { + // Incr increments the count for the specified key and returns the new value along + // with the number of seconds remaining. It may return an error + // if the operation fails. + // + // The method may return ErrNoSuchKey if the key to increment does not exist, + // in which case Reset will be called to initialize the value. + Incr(string, time.Duration) (int, int, error) + + // Reset resets the key to 1 with the specified window duration. It must create the + // key if it doesn't exist. It returns an error if it fails. + Reset(string, time.Duration) error +} + +// RemainingSeconds is a helper function that returns the number of seconds +// remaining from an absolute timestamp in UTC. +func RemainingSeconds(ts time.Time, window time.Duration) int { + return int((window - time.Now().UTC().Sub(ts)).Seconds()) +} |