Module: ProxyRb::Api::HttpProxy

Includes:
Capybara::DSL
Included in:
ProxyRb::Api
Defined in:
lib/proxy_rb/api/http_proxy.rb

Overview

For http proxy

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#resourceObject (readonly)

!@attribute resource

The resource which should be visited/downloaded


45
46
47
# File 'lib/proxy_rb/api/http_proxy.rb', line 45

def resource
  @resource
end

Instance Method Details

#proxyObject

The proxy based on subject



48
49
50
# File 'lib/proxy_rb/api/http_proxy.rb', line 48

def proxy
  @proxy ||= ProxyRb::HttpProxy.new(ProxyRb::ProxyUrlParser.new(subject))
end

#requestObject

Get access to the request made



92
93
94
# File 'lib/proxy_rb/api/http_proxy.rb', line 92

def request
  Request.new(page)
end

#responseObject

Get access to the response get



97
98
99
# File 'lib/proxy_rb/api/http_proxy.rb', line 97

def response
  Response.new(page)
end

#visit(url, p = proxy) ⇒ Object Also known as: download

Visit an URL

rubocop:disable Metrics/AbcSize

Parameters:

  • url (String)


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/proxy_rb/api/http_proxy.rb', line 56

def visit(url, p = proxy)
  @resource = Resource.new(url)

  proxy_rb.event_bus.notify Events::ResourceSet.new(resource.url.to_s)
  proxy_rb.event_bus.notify Events::ResourceUserSet.new(resource.credentials.to_s) unless resource.credentials.empty?

  NonIncludes.clear_environment
  NonIncludes.configure_driver

  proxy_rb.event_bus.notify Events::ProxySet.new(p.url.to_s)
  proxy_rb.event_bus.notify Events::ProxyUserSet.new(p.credentials.to_s) unless p.credentials.empty?

  NonIncludes.register_capybara_driver_for_proxy(p)

  proxy_rb.event_bus.notify Events::BeforeResourceFetched.new(page)

  begin
    super(resource.to_s)
  rescue *ProxyRb.config.driver.timeout_errors
    raise ProxyRb::UrlTimeoutError, "Failed to fetch #{resource}: Timeout occured."
  rescue *ProxyRb.config.driver.failure_errors => e
    raise ProxyRb::ResourceNotDownloadableError, "Failed to fetch #{resource}: #{e.message}."
  rescue => e
    raise ProxyRb::ResourceNotDownloadableError, "An unexpected error occured while fetching #{resource}: #{e.message}."
  end

  proxy_rb.event_bus.notify Events::AfterResourceFetched.new(page)
end