class HTTPClient::WebAgentSaver
def self.flag(cookie)
def self.flag(cookie) flg = 0 flg += USE # not used flg += SECURE if cookie.secure? flg += DOMAIN if cookie.for_domain? flg += HTTP_ONLY if cookie.httponly? flg += PATH if cookie.path # not used flg end
def self.set_flag(cookie, flag)
def self.set_flag(cookie, flag) cookie.secure = true if flag & SECURE > 0 cookie.for_domain = true if flag & DOMAIN > 0 cookie.httponly = true if flag & HTTP_ONLY > 0 end
def cookie_to_record(cookie)
def cookie_to_record(cookie) [ cookie.origin, cookie.name, cookie.value, cookie.expires.to_i, cookie.dot_domain, cookie.path, self.class.flag(cookie) ].join("\t") + "\n" end
def default_options
def default_options {} end
def load(io, jar)
def load(io, jar) io.each_line { |line| cookie = parse_record(line) and jar.add(cookie) } end
def parse_record(line)
def parse_record(line) return nil if /\A#/ =~ line col = line.chomp.split(/\t/) origin = col[0] name = col[1] value = col[2] value.chomp! if col[3].empty? or col[3] == '0' expires = nil else expires = Time.at(col[3].to_i) return nil if expires < Time.now end domain = col[4] path = col[5] cookie = WebAgent::Cookie.new(name, value, :origin => origin, :domain => domain, :path => path, :expires => expires ) self.class.set_flag(cookie, col[6].to_i) cookie end
def save(io, jar)
def save(io, jar) jar.each { |cookie| next if !@session && cookie.session? io.print cookie_to_record(cookie) } end