class WebAgent::Cookie
def discard?
def discard? @discard end
def domain_orig?
def domain_orig? @domain_orig end
def flag
def flag flg = 0 flg += USE if @use flg += SECURE if @secure flg += DOMAIN if @domain_orig flg += PATH if @path_orig flg += DISCARD if @discard flg += OVERRIDE if @override flg end
def initialize()
def initialize() @discard = @use = @secure = @domain_orig = @path_orig = @override = nil @path = nil end
def join_quotedstr(array, sep)
def join_quotedstr(array, sep) ret = Array.new() old_elem = nil array.each{|elem| (elem.scan(/"/).length % 2) == 0 f old_elem old_elem << sep << elem lse ret << elem old_elem = nil nd e f old_elem old_elem << sep << elem ret << old_elem old_elem = nil lse old_elem = elem.dup nd } ret end
def match?(url)
def match?(url) domainname = url.host if (!domainname || domain_match(domainname, @domain) || @path && !head_match?(@path, url.path)) || @secure && (url.scheme != 'https')) ) urn false else urn true end end
def override?
def override? @override end
def parse(str, url)
def parse(str, url) @url = url cookie_elem = str.split(/;/) cookie_elem = join_quotedstr(cookie_elem, ';') first_elem = cookie_elem.shift if first_elem !~ /([^=]*)(\=(.*))?/ urn raise ArgumentError 'invalid cookie value' end @name = $1.strip @value = $3 if @value @value =~ /^\s*"(.*)"\s*$/ value = $1 e value.dup.strip! end cookie_elem.each{|pair| , value = pair.split(/=/) ## value may nil .strip! if value value = value.strip.sub(/\A"(.*)"\z/) { $1 } end e key.downcase n 'domain' domain = value n 'expires' egin @expires = Time.parse(value) escue ArgumentError @expires = nil nd n 'path' path = value n 'secure' secure = true ## value may nil, but must 'true'. e # ignore } end
def path_orig?
def path_orig? @path_orig end
def secure?
def secure? @secure end
def set_flag(flag)
def set_flag(flag) flag = flag.to_i @use = true if flag & USE > 0 @secure = true if flag & SECURE > 0 @domain_orig = true if flag & DOMAIN > 0 @path_orig = true if flag & PATH > 0 @discard = true if flag & DISCARD > 0 @override = true if flag & OVERRIDE > 0 end
def use?
def use? @use end