7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/pause/analyzer.rb', line 7
def check(action)
timestamp = period_marker(Pause.config.resolution, Time.now.to_i)
set = adapter.key_history(action.scope, action.identifier)
action.checks.each do |period_check|
start_time = timestamp - period_check.period_seconds
set.reverse.inject(0) do |sum, element|
break if element.ts < start_time
sum += element.count
if sum >= period_check.max_allowed
adapter.rate_limit!(action.scope, action.identifier, period_check.block_ttl)
return Pause::RateLimitedEvent.new(action, period_check, sum, Time.now.to_i)
end
sum
end
end
nil
end
|