Module: HttpUtilities::Http::Adapters::OpenUri

Included in:
Client
Defined in:
lib/http_utilities/http/adapters/open_uri.rb

Instance Method Summary collapse

Instance Method Details

#retrieve_open_uri_content(url, options = {}, retries = 0, max_retries = 3) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/http_utilities/http/adapters/open_uri.rb', line 9

def retrieve_open_uri_content(url, options = {}, retries = 0, max_retries = 3)
  response  =   nil

  options   =   options.clone()
  request   =   HttpUtilities::Http::Request.new
  request.set_proxy_options(options)

  open_uri_options = {"UserAgent" => request.user_agent}
  open_uri_options[:read_timeout] = options.delete(:timeout) { |e| 120 }

  if (request.proxy[:host] && request.proxy[:port])
    proxy_address = Proxy.format_proxy_address(request.proxy[:host], request.proxy[:port], true)
    open_uri_options[:proxy] = proxy_address

    if (request.proxy[:username] && request.proxy[:password])
      open_uri_options[:proxy_http_basic_authentication] = [proxy_address, request.proxy[:username], request.proxy[:password]]
    end
  end

  connection = nil
  while (connection.nil? && retries < max_retries)
    connection = open(url, open_uri_options)
    retries += 1
  end

  if (connection)
    connection.rewind
    response  =   connection.readlines.join("\n")
    response  =   HttpUtilities::Http::Response.new(response, request)
  end

  return response
end