class Mechanize::CookieJar
Public Instance Methods
load(input, *options)
click to toggle source
Calls superclass method
# File lib/mechanize/cookie_jar.rb, line 120 def load(input, *options) input.respond_to?(:write) or return open(input, 'r') { |io| load(io, *options) } opthash = { :format => :yaml, :session => false, } case options.size when 0 when 1 case options = options.first when Symbol opthash[:format] = options else if hash = Hash.try_convert(options) opthash.update(hash) end end when 2 opthash[:format], options = options if hash = Hash.try_convert(options) opthash.update(hash) end else raise ArgumentError, 'wrong number of arguments (%d for 1-3)' % (1 + options.size) end return super(input, opthash) if opthash[:format] != :yaml begin data = YAML.load(input) rescue ArgumentError @logger.warn "unloadable YAML cookie data discarded" if @logger return self end case data when Array # Forward compatibility data.each { |cookie| add(cookie) } when Hash data.each { |domain, paths| paths.each { |path, names| names.each { |cookie_name, cookie| add(cookie) } } } else @logger.warn "incompatible YAML cookie data discarded" if @logger return self end end
save(output, *options)
click to toggle source
Calls superclass method
# File lib/mechanize/cookie_jar.rb, line 66 def save(output, *options) output.respond_to?(:write) or return open(output, 'w') { |io| save(io, *options) } opthash = { :format => :yaml, :session => false, } case options.size when 0 when 1 case options = options.first when Symbol opthash[:format] = options else opthash.update(options) if options end when 2 opthash[:format], options = options opthash.update(options) if options else raise ArgumentError, 'wrong number of arguments (%d for 1-3)' % (1 + options.size) end return super(output, opthash) if opthash[:format] != :yaml session = opthash[:session] nstore = HashStore.new each { |cookie| next if !session && cookie.session? if cookie.max_age cookie = cookie.dup cookie.expires = cookie.expires # convert max_age to expires end nstore.add(cookie) } yaml = YAML.dump(nstore.instance_variable_get(:@jar)) # a gross hack yaml.gsub!(%r{^( [^ ].*: !ruby/object:)HTTP::Cookie$}) { $1 + 'Mechanize::Cookie' } yaml.gsub!(%r{^( expires: )(?:|!!null|(.+?)) *$}) { $1 + ($2 ? Time.parse($2).httpdate : '') } output.write yaml self end