Class: WhatsAppNotifier::Bulk::RateLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/whatsapp_notifier/bulk/rate_limiter.rb

Instance Method Summary collapse

Constructor Details

#initialize(base_delay:, jitter:, sleeper:, rng: Random.new) ⇒ RateLimiter

Returns a new instance of RateLimiter.



4
5
6
7
8
9
# File 'lib/whatsapp_notifier/bulk/rate_limiter.rb', line 4

def initialize(base_delay:, jitter:, sleeper:, rng: Random.new)
  @base_delay = base_delay.to_f
  @jitter = jitter.to_f
  @sleeper = sleeper
  @rng = rng
end

Instance Method Details

#wait_before_nextObject



11
12
13
14
# File 'lib/whatsapp_notifier/bulk/rate_limiter.rb', line 11

def wait_before_next
  delay = @base_delay + (@rng.rand * @jitter)
  @sleeper.call(delay) if delay.positive?
end