Class: MsRest2::RetryPolicyMiddleware

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/ms_rest2/retry_policy_middleware.rb

Overview

Class which handles retry policy.

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ RetryPolicyMiddleware

Initializes a new instance of the RetryPolicyMiddleware class.



13
14
15
16
17
18
# File 'lib/ms_rest2/retry_policy_middleware.rb', line 13

def initialize(app, options = {})
  @times = options[:times] || 5
  @delay = options[:delay] || 0.01

  super(app)
end

Instance Method Details

#call(request_env) ⇒ Object

Performs request and response processing.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ms_rest2/retry_policy_middleware.rb', line 23

def call(request_env)
  request_body = request_env[:body]

  begin
    request_env[:body] = request_body

    @app.call(request_env).on_complete do |response_env|
      status_code = response_env.status

      if @times > 0 && (status_code == 408 || (status_code >= 500 && status_code != 501 && status_code != 505))
        sleep @delay
        fail 'faraday_retry'
      end
    end
  rescue Exception => e
    raise e if e.message != 'faraday_retry'
    @times = @times - 1
    retry
  end
end