class Tr4n5l4te::Agent

Constants

DEFAULT_UA

rubocop:disable Metrics/LineLength

Attributes

browser[R]

rubocop:enable Metrics/LineLength

Public Class Methods

new(options = {}) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 28
def initialize(options = {})
  Capybara.ignore_hidden_elements = false
  @browser = options[:browser] || Capybara.current_session
  browser.driver.headers = { 'User-Agent' => DEFAULT_UA }
end

Public Instance Methods

body() click to toggle source
# File lib/tr4n5l4te/agent.rb, line 81
def body
  browser.body
end
cookies() click to toggle source
# File lib/tr4n5l4te/agent.rb, line 72
def cookies
  browser.driver.cookies
end
elements(selector_string) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 85
def elements(selector_string)
  browser.all(selector_string)
end
load_cookies(cookie_file) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 34
def load_cookies(cookie_file)
  return false unless cookie_hash = YAML.safe_load(
    File.read(cookie_file), permitted_classes: [Capybara::Poltergeist::Cookie]
  )

  browser.driver.clear_cookies
  cookie_hash.each do |key, cookie_obj|
    browser.driver.set_cookie(
      key,
      cookie_obj.value,
      domain: cookie_obj.domain,
      path: cookie_obj.path,
      secure: cookie_obj.secure?,
      httponly: cookie_obj.httponly?,
      expires: cookie_obj.expires
    )
  end
end
store_cookies(cookie_file) click to toggle source

rubocop:enable

# File lib/tr4n5l4te/agent.rb, line 54
def store_cookies(cookie_file)
  FileUtils.mkdir_p(File.dirname(cookie_file))
  data = YAML.dump(browser.driver.cookies)
  File.open(cookie_file, 'w') { |f| f.write(data) }
end
visit(url) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 76
def visit(url)
  response = browser.visit(url)
  response.recursively_symbolize_keys!
end

Private Instance Methods

days(num) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 95
def days(num)
  num * 86_400
end
time_plus_years(years = 30) click to toggle source
# File lib/tr4n5l4te/agent.rb, line 91
def time_plus_years(years = 30)
  Time.now + days(365) * years
end