class MsRest::RetryPolicyMiddleware

Class which handles retry policy.

Public Class Methods

new(app, options = {}) click to toggle source

Initializes a new instance of the RetryPolicyMiddleware class.

Calls superclass method
# File lib/ms_rest/retry_policy_middleware.rb, line 12
def initialize(app, options = {})
  @times = options[:times] || 5
  @delay = options[:delay] || 0.01

  super(app)
end

Public Instance Methods

call(request_env) click to toggle source

Performs request and response processing.

# File lib/ms_rest/retry_policy_middleware.rb, line 22
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