lib/tr4n5l4te/agent.rb in tr4n5l4te-0.1.5 vs lib/tr4n5l4te/agent.rb in tr4n5l4te-0.1.6
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
require 'capybara'
require 'capybara/poltergeist'
require 'yaml'
module Tr4n5l4te
@@ -14,24 +16,26 @@
Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
class Agent
# rubocop:disable Metrics/LineLength
- DEFAULT_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4'.freeze
+ DEFAULT_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4'
# rubocop:enable Metrics/LineLength
attr_reader :browser
def initialize(options = {})
Capybara.ignore_hidden_elements = false
@browser = options[:browser] || Capybara.current_session
browser.driver.headers = { 'User-Agent' => DEFAULT_UA }
end
- # rubocop:disable Metrics/AbcSize, Lint/AssignmentInCondition
def load_cookies(cookie_file)
- return false unless cookie_hash = YAML.load(File.read(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,
@@ -41,10 +45,10 @@
httponly: cookie_obj.httponly?,
expires: cookie_obj.expires
)
end
end
- # rubocop:enable Metrics/AbcSize, Lint/AssignmentInCondition
+ # rubocop:enable
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) }