Sha256: bd179e80fe2c37ff498fa2fd8d03b98fef65c6ed091f864e838ba6240c2efebb
Contents?: true
Size: 830 Bytes
Versions: 1
Compression:
Stored size: 830 Bytes
Contents
require 'active_support' require 'raterr/version' require 'raterr/period_builder' require 'raterr/mixin' require 'raterr/hour' require 'raterr/day' require 'raterr/minute' module Raterr InvalidStore = Class.new(StandardError) 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) unless store.is_a?(Hash) || store.is_a?(::ActiveSupport::Cache::MemoryStore) raise InvalidStore.new('Store is not valid, please refer to the documentation') end 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.1 | lib/raterr.rb |