def self.parse_set_cookie set_cookie_value
args = { }
params=set_cookie_value.split /;\s*/
first=true
params.each do |param|
result = PARAM1.match param
if !result
raise InvalidCookieError.new "Invalid cookie parameter in cookie '#{set_cookie_value}'"
end
key = result[1].downcase.to_sym
keyvalue = result[2]
if first
args[:name] = result[1]
args[:value] = keyvalue
first = false
else
case key
when :expires
args[:expires_at] = Time.parse keyvalue
when *[:domain, :path]
args[key] = keyvalue
when :secure
args[:secure] = true
when :httponly
args[:http_only] = true
else
raise InvalidCookieError.new "Unknown cookie parameter '#{key}'"
end
end
end
args[:version] = 0
args
end