mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-25 09:25:49 +00:00
refactor: avoid rescuing pattern repetition
This commit is contained in:
parent
20d668211e
commit
04eeeb9a33
3 changed files with 40 additions and 36 deletions
|
|
@ -24,35 +24,35 @@ module Rack
|
|||
end
|
||||
|
||||
def read(key)
|
||||
with do |client|
|
||||
client.get(key)
|
||||
rescuing do
|
||||
with do |client|
|
||||
client.get(key)
|
||||
end
|
||||
end
|
||||
rescue Dalli::DalliError
|
||||
nil
|
||||
end
|
||||
|
||||
def write(key, value, options = {})
|
||||
with do |client|
|
||||
client.set(key, value, options.fetch(:expires_in, 0), raw: true)
|
||||
rescuing do
|
||||
with do |client|
|
||||
client.set(key, value, options.fetch(:expires_in, 0), raw: true)
|
||||
end
|
||||
end
|
||||
rescue Dalli::DalliError
|
||||
nil
|
||||
end
|
||||
|
||||
def increment(key, amount, options = {})
|
||||
with do |client|
|
||||
client.incr(key, amount, options.fetch(:expires_in, 0), amount)
|
||||
rescuing do
|
||||
with do |client|
|
||||
client.incr(key, amount, options.fetch(:expires_in, 0), amount)
|
||||
end
|
||||
end
|
||||
rescue Dalli::DalliError
|
||||
nil
|
||||
end
|
||||
|
||||
def delete(key)
|
||||
with do |client|
|
||||
client.delete(key)
|
||||
rescuing do
|
||||
with do |client|
|
||||
client.delete(key)
|
||||
end
|
||||
end
|
||||
rescue Dalli::DalliError
|
||||
nil
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -64,6 +64,12 @@ module Rack
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
def rescuing
|
||||
yield
|
||||
rescue Dalli::DalliError
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,36 +19,38 @@ module Rack
|
|||
end
|
||||
|
||||
def read(key)
|
||||
get(key)
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
rescuing { get(key) }
|
||||
end
|
||||
|
||||
def write(key, value, options = {})
|
||||
if (expires_in = options[:expires_in])
|
||||
setex(key, expires_in, value)
|
||||
rescuing { setex(key, expires_in, value) }
|
||||
else
|
||||
set(key, value)
|
||||
rescuing { set(key, value) }
|
||||
end
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
end
|
||||
|
||||
def increment(key, amount, options = {})
|
||||
count = nil
|
||||
|
||||
pipelined do
|
||||
count = incrby(key, amount)
|
||||
expire(key, options[:expires_in]) if options[:expires_in]
|
||||
rescuing do
|
||||
pipelined do
|
||||
count = incrby(key, amount)
|
||||
expire(key, options[:expires_in]) if options[:expires_in]
|
||||
end
|
||||
end
|
||||
|
||||
count.value if count
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
end
|
||||
|
||||
def delete(key, _options = {})
|
||||
del(key)
|
||||
rescuing { del(key) }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def rescuing
|
||||
yield
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,19 +11,15 @@ module Rack
|
|||
end
|
||||
|
||||
def read(key)
|
||||
get(key, raw: true)
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
rescuing { get(key, raw: true) }
|
||||
end
|
||||
|
||||
def write(key, value, options = {})
|
||||
if (expires_in = options[:expires_in])
|
||||
setex(key, expires_in, value, raw: true)
|
||||
rescuing { setex(key, expires_in, value, raw: true) }
|
||||
else
|
||||
set(key, value, raw: true)
|
||||
rescuing { set(key, value, raw: true) }
|
||||
end
|
||||
rescue Redis::BaseError
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue