module Rack::Attack::PeriodIntrospection

Public Instance Methods

time_range(time_bucket) click to toggle source

time_bucket is epoch_time / period

# File lib/rack/attack_extensions.rb, line 191
def time_range(time_bucket)
  time_bucket = time_bucket.to_i
  start_time = Time.at(time_bucket * period)
  end_time   = Time.at(start_time  + period)
  duration   = ActiveSupport::Duration.build(end_time - start_time)

  (start_time .. end_time).tap do |time_range|
    # @return [ActiveSupport::Duration]
    time_range.define_singleton_method :duration do
      duration
    end
  end
end