Cookie.new: Deprecate un-downcased keywords.

This commit is contained in:
Akinori MUSHA 2013-04-13 12:56:33 +09:00
parent 75267e8002
commit 02587d67e0

View file

@ -163,7 +163,7 @@ class HTTP::Cookie
# #
# Creates a cookie object. For each key of `attr_hash`, the setter # Creates a cookie object. For each key of `attr_hash`, the setter
# is called if defined. Each key can be either a symbol or a # is called if defined. Each key can be either a symbol or a
# string, downcased or not. # string of downcased attribute names.
# #
# This methods accepts any attribute name for which a setter method # This methods accepts any attribute name for which a setter method
# is defined. Beware, however, any error (typically ArgumentError) # is defined. Beware, however, any error (typically ArgumentError)
@ -209,25 +209,45 @@ class HTTP::Cookie
for_domain = false for_domain = false
domain = max_age = origin = nil domain = max_age = origin = nil
attr_hash.each_pair { |key, val| attr_hash.each_pair { |key, val|
skey = key.to_s.downcase case key.to_sym
if skey.sub!(/\?\z/, '') when :name
val = val ? true : false self.name = val
end when :value
case skey
when 'value'
value = val value = val
when 'for_domain' when :domain
for_domain = !!val
when 'domain'
domain = val domain = val
when 'origin' when :path
self.path = val
when :origin
origin = val origin = val
when 'max_age' when :for_domain, :for_domain?
for_domain = val
when :max_age
# Let max_age take precedence over expires # Let max_age take precedence over expires
max_age = val max_age = val
when :expires, :expires_at
self.expires = val
when :httponly, :httponly?
@httponly = val
when :secure, :secure?
@secure = val
when /[A-Z]/
warn "keyword should be downcased: #{key}" if $VERBOSE
key = key.downcase
redo
when Symbol
setter = :"#{key}="
if respond_to?(setter)
__send__(setter, val)
else else
setter = :"#{skey}=" warn "unknown keyword: #{key}" if $VERBOSE
__send__(setter, val) if respond_to?(setter) end
when String
key = key.to_sym
redo
else
key = key.to_s
redo
end end
} }
if @name.nil? if @name.nil?