mirror of
https://github.com/samsonjs/http-cookie.git
synced 2026-04-01 10:05:53 +00:00
HTTP::Cookie.set_cookie_value: Don't take an origin argument.
This commit is contained in:
parent
88e3f28591
commit
28458101b6
2 changed files with 32 additions and 12 deletions
|
|
@ -593,21 +593,25 @@ class HTTP::Cookie
|
|||
end
|
||||
alias to_s cookie_value
|
||||
|
||||
# Returns a string for use in the Set-Cookie header. If the cookie
|
||||
# does not have an origin set, one must be given from the argument.
|
||||
#
|
||||
# This method does not check if this cookie will be accepted from
|
||||
# the origin.
|
||||
def set_cookie_value(origin = nil)
|
||||
origin = origin ? URI(origin) : @origin or
|
||||
raise "origin must be specified to produce a value for Set-Cookie"
|
||||
|
||||
# Returns a string for use in the Set-Cookie header. If necessary
|
||||
# information like a path or domain (when `for_domain` is set) is
|
||||
# missing, RuntimeError is raised. It is always the best to set an
|
||||
# origin before calling this method.
|
||||
def set_cookie_value
|
||||
string = cookie_value
|
||||
if @for_domain
|
||||
string << "; Domain=#{@domain}"
|
||||
if @domain
|
||||
string << "; Domain=#{@domain}"
|
||||
else
|
||||
raise "for_domain is specified but domain is known"
|
||||
end
|
||||
end
|
||||
if (origin + './').path != @path
|
||||
string << "; Path=#{@path}"
|
||||
if @path
|
||||
if !@origin || (@origin + './').path != @path
|
||||
string << "; Path=#{@path}"
|
||||
end
|
||||
else
|
||||
raise "path is known"
|
||||
end
|
||||
if @max_age
|
||||
string << "; Max-Age=#{@max_age}"
|
||||
|
|
|
|||
|
|
@ -458,6 +458,22 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|||
def test_set_cookie_value
|
||||
url = URI.parse('http://rubyforge.org/path/')
|
||||
|
||||
[
|
||||
HTTP::Cookie.new('a', 'b', :domain => 'rubyforge.org', :path => '/path/'),
|
||||
HTTP::Cookie.new('a', 'b', :origin => url),
|
||||
].each { |cookie|
|
||||
cookie.set_cookie_value
|
||||
}
|
||||
|
||||
[
|
||||
HTTP::Cookie.new('a', 'b', :domain => 'rubyforge.org'),
|
||||
HTTP::Cookie.new('a', 'b', :for_domain => true, :path => '/path/'),
|
||||
].each { |cookie|
|
||||
assert_raises(RuntimeError) {
|
||||
cookie.set_cookie_value
|
||||
}
|
||||
}
|
||||
|
||||
['foo=bar', 'foo="bar"', 'foo="ba\"r baz"'].each { |cookie_value|
|
||||
cookie_params = @cookie_params.merge('path' => '/path/', 'secure' => 'secure', 'max-age' => 'Max-Age=1000')
|
||||
date = Time.at(Time.now.to_i)
|
||||
|
|
|
|||
Loading…
Reference in a new issue