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) }