lib/capybara/sessionkeeper.rb in capybara-sessionkeeper-0.1.5 vs lib/capybara/sessionkeeper.rb in capybara-sessionkeeper-0.1.6
- old
+ new
@@ -1,7 +1,8 @@
require 'capybara'
require "capybara/sessionkeeper/version"
+require 'yaml'
module Capybara
module Sessionkeeper
class CookieError < StandardError; end
@@ -11,21 +12,30 @@
File.open(path, 'wb') {|f| f.puts(data) }
path
end
def restore_cookies(path = nil)
- raise CookieError, "visit must be performed to restore cookies" if ['data:,', 'about:blank'].include?(current_url)
path ||= find_latest_cookie_file
return nil if path.nil?
data = File.open(path, 'rb') {|f| f.read }
- Marshal.load(data).each do |d|
+ restore_cookies_from_data(data)
+ end
+
+ def restore_cookies_from_data(data, options = {})
+ raise CookieError, "visit must be performed to restore cookies" if ['data:,', 'about:blank'].include?(current_url)
+ cookies = %w[yml yaml].include?(options[:format]) ? YAML.load(data) : Marshal.load(data)
+ cookies.each do |d|
begin
driver.browser.manage.add_cookie d
rescue => e
skip_invalid_cookie_domain_error(e)
end
end
driver.browser.manage.all_cookies
+ end
+
+ def cookies_to_yaml
+ YAML.dump driver.browser.manage.all_cookies
end
def cookie_file_extension
'cookies.txt'
end