class Makuri::Browser

Attributes

engine[RW]
headless[RW]
request_body[RW]
request_method[RW]
url[RW]
user_agent[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/makuri/browser.rb, line 5
def initialize(options = {})
  @engine         = options.fetch(:engine, :net_http)
  @headless       = options.fetch(:headless, true)
  @user_agent     = options.fetch(
    :user_agent,
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
  )

  # Defaults
  @request_method = :get
  @request_body   = {}
end

Public Instance Methods

browser() click to toggle source
# File lib/makuri/browser.rb, line 18
def browser
  @browser ||= create_browser
end
follow() click to toggle source

Only allow for capybara get request

# File lib/makuri/browser.rb, line 35
def follow
  browser.visit(@url)
  browser
end
request(url, options = {}) click to toggle source

Allow for NetHttp get request

# File lib/makuri/browser.rb, line 23
def request(url, options = {})
  @url = url
  validate_url

  return follow if engine_chrome?

  @request_method = options.fetch(:method, request_method)
  @request_body   = options.fetch(:body, request_body)
  browser.visit(@url)
end

Private Instance Methods

browser_params() click to toggle source
# File lib/makuri/browser.rb, line 48
def browser_params
  {
    user_agent: user_agent,
    headless: headless,
    request_method: request_method,
    request_body: request_body
  }
end
create_browser() click to toggle source
# File lib/makuri/browser.rb, line 42
def create_browser
  browser_engine = engine_chrome? ? 'Chrome' : 'NetHttp'
  builder        = Object.const_get "Makuri::BrowserBuilder::#{browser_engine}"
  builder.new(browser_params).build
end
engine_chrome?() click to toggle source
# File lib/makuri/browser.rb, line 62
def engine_chrome?
  engine == :chrome
end
validate_url() click to toggle source
# File lib/makuri/browser.rb, line 57
def validate_url
  uri = URI.parse(@url)
  raise 'Invalid URL supplied' unless uri.is_a?(URI::HTTP) && !uri.host.nil?
end