mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-28 09:55:51 +00:00
Avoid as much repetition as possible between RedisProxy and RedisStoreProxy
This commit is contained in:
parent
b40b5718dc
commit
673cf98157
2 changed files with 13 additions and 30 deletions
|
|
@ -6,16 +6,21 @@ module Rack
|
|||
class Attack
|
||||
module StoreProxy
|
||||
class RedisProxy < SimpleDelegator
|
||||
def initialize(*args)
|
||||
if Gem::Version.new(Redis::VERSION) < Gem::Version.new("3")
|
||||
warn 'RackAttack requires Redis gem >= 3.0.0.'
|
||||
end
|
||||
|
||||
super(*args)
|
||||
end
|
||||
|
||||
def self.handle?(store)
|
||||
defined?(::Redis) && store.is_a?(::Redis)
|
||||
end
|
||||
|
||||
def initialize(store)
|
||||
super(store)
|
||||
end
|
||||
|
||||
def read(key)
|
||||
get(key)
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
|
||||
def write(key, value, options = {})
|
||||
|
|
@ -24,6 +29,7 @@ module Rack
|
|||
else
|
||||
set(key, value)
|
||||
end
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
|
||||
def increment(key, amount, options = {})
|
||||
|
|
@ -35,10 +41,12 @@ module Rack
|
|||
end
|
||||
|
||||
count.value if count
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
|
||||
def delete(key, _options = {})
|
||||
del(key)
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,15 +5,7 @@ require 'delegate'
|
|||
module Rack
|
||||
class Attack
|
||||
module StoreProxy
|
||||
class RedisStoreProxy < SimpleDelegator
|
||||
def initialize(*args)
|
||||
if Gem::Version.new(Redis::VERSION) < Gem::Version.new("3")
|
||||
warn 'RackAttack requires Redis gem >= 3.0.0.'
|
||||
end
|
||||
|
||||
super(*args)
|
||||
end
|
||||
|
||||
class RedisStoreProxy < RedisProxy
|
||||
def self.handle?(store)
|
||||
defined?(::Redis::Store) && store.is_a?(::Redis::Store)
|
||||
end
|
||||
|
|
@ -31,23 +23,6 @@ module Rack
|
|||
end
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
|
||||
def increment(key, amount, options = {})
|
||||
count = nil
|
||||
|
||||
pipelined do
|
||||
count = incrby(key, amount)
|
||||
expire(key, options[:expires_in]) if options[:expires_in]
|
||||
end
|
||||
|
||||
count.value if count
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
|
||||
def delete(key, _options = {})
|
||||
del(key)
|
||||
rescue Redis::BaseError
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue