class Grape::Attack::Adapters::Redis

Attributes

broker[R]

Public Class Methods

new() click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 10
def initialize
  @broker = ::Redis::Namespace.new("grape-attack:#{env}:thottle", redis: ::Redis.new(url: url))
end

Public Instance Methods

atomically(&block) click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 32
def atomically(&block)
  broker.multi(&block)
end
expire(key, ttl_in_seconds) click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 26
def expire(key, ttl_in_seconds)
  with_custom_exception do
    broker.expire(key, ttl_in_seconds)
  end
end
get(key) click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 14
def get(key)
  with_custom_exception do
    broker.get(key)
  end
end
incr(key) click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 20
def incr(key)
  with_custom_exception do
    broker.incr(key)
  end
end

Private Instance Methods

env() click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 44
def env
  if defined?(::Rails)
    ::Rails.env
  elsif defined?(RACK_ENV)
    RACK_ENV
  else
    ENV['RACK_ENV']
  end
end
url() click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 54
def url
  ENV['REDIS_URL'] || 'redis://localhost:6379/0'
end
with_custom_exception(&block) click to toggle source
# File lib/grape/attack/adapters/redis.rb, line 38
def with_custom_exception(&block)
  block.call
rescue ::Redis::BaseError => e
  raise ::Grape::Attack::StoreError.new(e.message)
end