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