Files
docuseal/lib/rate_limit.rb
Pete Matsyburka 749722a9df add rate limit
2024-03-16 23:22:11 +02:00

20 lines
373 B
Ruby

# frozen_string_literal: true
module RateLimit
LimitApproached = Class.new(StandardError)
STORE = ActiveSupport::Cache::MemoryStore.new
module_function
def call(key, limit:, ttl:, enabled: Docuseal.multitenant?)
return true unless enabled
value = STORE.increment(key, 1, expires_in: ttl)
raise LimitApproached if value > limit
true
end
end