def self.parse_set_cookie2 set_cookie_value
args = { }
first = true
index = 0
begin
md = PARAM2.match set_cookie_value[index..-1]
if md.nil? || md.offset(0).first != 0
raise InvalidCookieError.new "Invalid Set-Cookie2 header '#{set_cookie_value}'"
end
index+=md.offset(0)[1]
key = md[1].downcase.to_sym
keyvalue = md[2] || md[3]
if first
args[:name] = md[1]
args[:value] = keyvalue
first = false
else
keyvalue = value_to_string keyvalue
case key
when *[:comment,:commenturl,:domain,:path]
args[key] = keyvalue
when *[:discard,:secure]
args[key] = true
when :httponly
args[:http_only] = true
when "max-age""max-age"
args[:max_age] = keyvalue.to_i
when :version
args[:version] = keyvalue.to_i
when :port
ports = keyvalue.split /,\s*/
args[:ports] = ports.map do |portstr| portstr.to_i end
else
raise InvalidCookieError.new "Unknown cookie parameter '#{key}'"
end
end
end until md.post_match.empty?
if args[:version] != 1
raise InvalidCookieError.new "Set-Cookie2 declares a non RFC2965 version cookie"
end
args
end