class XRBP::WebClient::Plugins::AutoRetry
Plugin to automatically retry WebClient
Connection
requests multiple times.
If no max_tries
are specified, requests will be tried indefinitely. Optionally configured interval to wait between retries.
@example retrying request:
connection = WebClient::Connection.new connection.add_plugin :autoretry connection.max_tries = 3 connection.interval = 1 connection.timeout = 1 connection.url = "http://doesnt.exist" connection.perform
Attributes
interval[RW]
max_tries[RW]
Public Class Methods
new(connection)
click to toggle source
Calls superclass method
XRBP::PluginBase::new
# File lib/xrbp/webclient/plugins/autoretry.rb, line 23 def initialize(connection) super(connection) @interval = 3 @max_tries = nil @retry_num = 0 end
Public Instance Methods
added()
click to toggle source
# File lib/xrbp/webclient/plugins/autoretry.rb, line 30 def added plugin = self connection.define_instance_method(:retry_interval=) do |i| plugin.interval = i end connection.define_instance_method(:max_retries=) do |i| plugin.max_tries = i end end
handle_error()
click to toggle source
# File lib/xrbp/webclient/plugins/autoretry.rb, line 41 def handle_error @retry_num += 1 return nil if connection.force_quit? || (!@max_tries.nil? && @retry_num > @max_tries) connection.rsleep(@interval) connection.perform end