class AddressFinder::HTTP
Attributes
Public Class Methods
Source
# File lib/addressfinder/http.rb, line 7 def initialize(config) @config = config @connection_is_bad = false end
Public Instance Methods
Source
# File lib/addressfinder/http.rb, line 18 def request(request_uri) retries = 0 begin re_establish_connection if @connection_is_bad uri = build_uri(request_uri) request = Net::HTTP::Get.new(uri) net_http.request(request) rescue Net::ReadTimeout, Net::OpenTimeout, SocketError => error if retries < config.retries retries += 1 sleep(config.retry_delay) @connection_is_bad = true if net_http.started? retry else raise error end end end
Source
# File lib/addressfinder/http.rb, line 12 def start(&block) net_http.start do block.call(self) end end
Private Instance Methods
Source
# File lib/addressfinder/http.rb, line 47 def build_uri(request_uri) uri = URI(request_uri) encoded_ca = URI.encode_www_form_component(config.ca) if uri.query uri.query += "&ca=#{encoded_ca}" else uri.query = "ca=#{encoded_ca}" end uri.to_s end
Source
# File lib/addressfinder/http.rb, line 60 def net_http @net_http ||= begin http = Net::HTTP.new(config.hostname, config.port, config.proxy_host, config.proxy_port, config.proxy_user, config.proxy_password) http.open_timeout = config.timeout http.read_timeout = config.timeout http.use_ssl = true http end end
Source
# File lib/addressfinder/http.rb, line 41 def re_establish_connection @connection_is_bad = false net_http.finish net_http.start end