lib/raterr.rb in raterr-0.1.0 vs lib/raterr.rb in raterr-0.1.1

- old
+ new

@@ -1,14 +1,17 @@ +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}.", @@ -18,9 +21,13 @@ 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