Sha256: 69676c3ebc68973d5279a5e237beb28d497a9a85ae27f14db27eb17155ca7ba1

Contents?: true

Size: 580 Bytes

Versions: 1

Compression:

Stored size: 580 Bytes

Contents

require 'raterr/version'
require 'raterr/period_builder'
require 'raterr/mixin'
require 'raterr/hour'
require 'raterr/day'
require 'raterr/minute'

module Raterr

  AVAILABLE_PERIODS = [:minute, :hour, :day, :week, :month].freeze
  DEFAULTS = {
    max: 100,
    code: 429,
    message: "Rate limit exceeded. Try again in %{time}.",
    period: :hour
  }.freeze

  class << self

    attr_accessor :store

    def enforce(request, **options)
      period = PeriodBuilder.call(request, options)
      period.allowed? ? period.proceed : period.rate_limit_exceeded
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
raterr-0.1.0 lib/raterr.rb