class PaulWalker::RateLimit

Public Class Methods

add(namespace, key, current, max) click to toggle source
# File lib/paul_walker/rate_limit.rb, line 6
def self.add(namespace, key, current, max)
  store.set(composite_key(namespace, key),
            {
            current: current,
            max: max,
            timestamp: Time.now.utc
            }.to_json)
  set_last_used(namespace, key)
end
composite_key(namespace, key) click to toggle source
# File lib/paul_walker/rate_limit.rb, line 26
def self.composite_key(namespace, key)
  "#{namespace}:#{key}"
end
get(namespace, key) click to toggle source
# File lib/paul_walker/rate_limit.rb, line 16
def self.get(namespace, key)
  value = store.get(composite_key(namespace, key))
  return nil if value.nil?
  value = JSON.parse(value)
  time = Time.parse(value['timestamp'])
  adjusted_current = Time.now.utc.to_i - time.to_i + value['current']
  value['current'] = adjusted_current <= value['current'] ? adjusted_current : value['max']
  value
end
last_used(namespace) click to toggle source
# File lib/paul_walker/rate_limit.rb, line 34
def self.last_used(namespace)
  store.get(composite_key(namespace, 'last_used'))
end
set_last_used(namespace, key) click to toggle source
# File lib/paul_walker/rate_limit.rb, line 30
def self.set_last_used(namespace, key)
  store.set(composite_key(namespace, 'last_used'), key)
end
store() click to toggle source
# File lib/paul_walker/rate_limit.rb, line 38
def self.store
  store = Store.new
  store.provider
end