class Grape::Attack::Counter
Attributes
adapter[R]
request[R]
Public Class Methods
new(request, adapter)
click to toggle source
# File lib/grape/attack/counter.rb, line 7 def initialize(request, adapter) @request = request @adapter = adapter end
Public Instance Methods
update()
click to toggle source
# File lib/grape/attack/counter.rb, line 20 def update adapter.atomically do adapter.incr(key) adapter.expire(key, ttl_in_seconds) end rescue ::Grape::Attack::StoreError end
value()
click to toggle source
# File lib/grape/attack/counter.rb, line 12 def value @value ||= begin adapter.get(key).to_i rescue ::Grape::Attack::StoreError 1 end end
Private Instance Methods
key()
click to toggle source
# File lib/grape/attack/counter.rb, line 30 def key "#{request.method}:#{request.path}:#{request.client_identifier}" end
ttl_in_seconds()
click to toggle source
# File lib/grape/attack/counter.rb, line 34 def ttl_in_seconds request.throttle_options.per.to_i end