Class: MTProto::Async::Middleware::FloodWait

Inherits:
Base
  • Object
show all
Defined in:
lib/mtproto/async/middleware/flood_wait.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, max_retries: 5) ⇒ FloodWait

Returns a new instance of FloodWait.



9
10
11
12
# File 'lib/mtproto/async/middleware/flood_wait.rb', line 9

def initialize(app, max_retries: 5)
  super(app)
  @max_retries = max_retries
end

Instance Method Details

#call(request, future, retry_fn, retries) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/mtproto/async/middleware/flood_wait.rb', line 14

def call(request, future, retry_fn, retries)
  wrapped = @app.call(request, future, retry_fn, retries)

  wrapped.rescue do |error|
    if flood_wait_error?(error) && retries < @max_retries
      delay = extract_delay(error.error_message)
      sleep(delay)
      retry_fn.call.value!
    else
      raise error
    end
  end
end