Class: CGI::Cookie
- Defined in:
- lib/action_controller/cgi_ext/cookie.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#domain ⇒ Object
Returns the value of attribute domain.
-
#expires ⇒ Object
Returns the value of attribute expires.
-
#http_only ⇒ Object
Returns the value of attribute http_only.
-
#name ⇒ Object
Returns the value of attribute name.
-
#path ⇒ Object
Returns the value of attribute path.
-
#secure ⇒ Object
Returns the value of attribute secure.
-
#value ⇒ Object
Returns the value of attribute value.
Class Method Summary collapse
-
.parse(raw_cookie) ⇒ Object
Parses a raw cookie string into a hash of
cookie-name => cookie-object
pairs.
Instance Method Summary collapse
-
#initialize(name = '', *value) ⇒ Cookie
constructor
Creates a new CGI::Cookie object.
-
#respond_to?(method, include_private = false) ⇒ Boolean
FIXME: work around broken 1.8.7 DelegateClass#respond_to?.
-
#to_s ⇒ Object
Converts the Cookie to its string representation.
Constructor Details
#initialize(name = '', *value) ⇒ Cookie
Creates a new CGI::Cookie object.
The contents of the cookie can be specified as a name
and one or more value
arguments. Alternatively, the contents can be specified as a single hash argument. The possible keywords of this hash are as follows:
-
:name
- The name of the cookie. Required. -
:value
- The cookie’s value or list of values. -
:path
- The path for which this cookie applies. Defaults to the base directory of the CGI script. -
:domain
- The domain for which this cookie applies. -
:expires
- The time at which this cookie expires, as a Time object. -
:secure
- Whether this cookie is a secure cookie or not (defaults tofalse
). Secure cookies are only transmitted to HTTPS servers. -
:http_only
- Whether this cookie can be accessed by client side scripts (e.g. document.cookie) or only over HTTP. More details in msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx. Defaults tofalse
.
These keywords correspond to attributes of the cookie object.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 28 def initialize(name = '', *value) if name.kind_of?(String) @name = name @value = Array(value) @domain = nil @expires = nil @secure = false @http_only = false @path = nil else @name = name['name'] @value = (name['value'].kind_of?(String) ? [name['value']] : Array(name['value'])).delete_if(&:blank?) @domain = name['domain'] @expires = name['expires'] @secure = name['secure'] || false @http_only = name['http_only'] || false @path = name['path'] end raise ArgumentError, "`name' required" unless @name # simple support for IE unless @path %r|^(.*/)|.match(ENV['SCRIPT_NAME']) @path = ($1 or '') end super(@value) end |
Instance Attribute Details
#domain ⇒ Object
Returns the value of attribute domain.
6 7 8 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 6 def domain @domain end |
#expires ⇒ Object
Returns the value of attribute expires.
6 7 8 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 6 def expires @expires end |
#http_only ⇒ Object
Returns the value of attribute http_only.
7 8 9 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 7 def http_only @http_only end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 6 def name @name end |
#path ⇒ Object
Returns the value of attribute path.
6 7 8 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 6 def path @path end |
#secure ⇒ Object
Returns the value of attribute secure.
7 8 9 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 7 def secure @secure end |
#value ⇒ Object
Returns the value of attribute value.
6 7 8 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 6 def value @value end |
Class Method Details
.parse(raw_cookie) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 93 def self.parse() = Hash.new([]) if .split(/;\s?/).each do |pairs| name, value = pairs.split('=',2) next unless name and value name = CGI::unescape(name) unless .has_key?(name) [name] = new(name, CGI::unescape(value)) end end end end |
Instance Method Details
#respond_to?(method, include_private = false) ⇒ Boolean
FIXME: work around broken 1.8.7 DelegateClass#respond_to?
82 83 84 85 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 82 def respond_to?(method, include_private = false) return true if super(method) return __getobj__.respond_to?(method, include_private) end |
#to_s ⇒ Object
Converts the Cookie to its string representation.
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/action_controller/cgi_ext/cookie.rb', line 69 def to_s buf = '' buf << @name << '=' buf << (@value.kind_of?(String) ? CGI::escape(@value) : @value.collect{|v| CGI::escape(v) }.join("&")) buf << '; domain=' << @domain if @domain buf << '; path=' << @path if @path buf << '; expires=' << CGI::rfc1123_date(@expires) if @expires buf << '; secure' if @secure buf << '; HttpOnly' if @http_only buf end |