Class: CGI::Cookie
- Inherits:
-
Array
- Object
- Array
- CGI::Cookie
- Defined in:
- lib/cgi/cookie.rb
Overview
Class representing an HTTP cookie.
In addition to its specific fields and methods, a Cookie instance is a delegator to the array of its values.
See RFC 2965.
Examples of use
= CGI::Cookie.new("name", "value1", "value2", ...)
= CGI::Cookie.new("name" => "name", "value" => "value")
= CGI::Cookie.new('name' => 'name',
'value' => ['value1', 'value2', ...],
'path' => 'path', # optional
'domain' => 'domain', # optional
'expires' => Time.now, # optional
'secure' => true, # optional
'httponly' => true # optional
)
cgi.out("cookie" => [, ]) { "string" }
name = .name
values = .value
path = .path
domain = .domain
expires = .expires
secure = .secure
httponly = .httponly
.name = 'name'
.value = ['value1', 'value2', ...]
.path = 'path'
.domain = 'domain'
.expires = Time.now + 30
.secure = true
.httponly = true
Constant Summary collapse
- TOKEN_RE =
:stopdoc:
%r"\A[[!-~]&&[^()<>@,;:\\\"/?=\[\]{}]]+\z"- PATH_VALUE_RE =
%r"\A[[ -~]&&[^;]]*\z"- DOMAIN_VALUE_RE =
%r"\A\.?(?<label>(?!-)[-A-Za-z0-9]+(?<!-))(?:\.\g<label>)*\z"- @@accept_charset =
"UTF-8"
Instance Attribute Summary collapse
-
#domain ⇒ Object
Domain for which this cookie applies, as a
String. -
#expires ⇒ Object
Time at which this cookie expires, as a
Time. -
#httponly ⇒ Object
True if this cookie is httponly; false otherwise.
-
#name ⇒ Object
Name of this cookie, as a
String. -
#path ⇒ Object
Path for which this cookie applies, as a
String. -
#secure ⇒ Object
True if this cookie is secure; false otherwise.
Class Method Summary collapse
-
.parse(raw_cookie) ⇒ Object
Parse a raw cookie string into a hash of cookie-name=>Cookie pairs.
Instance Method Summary collapse
-
#initialize(name = "", *value) ⇒ Cookie
constructor
Create a new CGI::Cookie object.
-
#inspect ⇒ Object
A summary of cookie string.
-
#to_s ⇒ Object
Convert the Cookie to its string representation.
-
#value ⇒ Object
Returns the value or list of values for this cookie.
-
#value=(val) ⇒ Object
Replaces the value of this cookie with a new value or list of values.
Constructor Details
#initialize(name = "", *value) ⇒ Cookie
Create a new CGI::Cookie object.
:call-seq:
Cookie.new(name_string,*value)
Cookie.new()
name_string-
The name of the cookie; in this form, there is no #domain or #expiration. The #path is gleaned from the
SCRIPT_NAMEenvironment variable, and #secure is false. *value-
value or list of values of the cookie
options_hash-
A Hash of options to initialize this Cookie. Possible options are:
- 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 value of the
SCRIPT_NAMEenvironment variable. - domain
-
the domain for which this cookie applies.
- expires
-
the time at which this cookie expires, as a
Timeobject. - secure
-
whether this cookie is a secure cookie or not (default to false). Secure cookies are only transmitted to HTTPS servers.
- httponly
-
whether this cookie is a HttpOnly cookie or not (default to
false). HttpOnly are not available to javascript.These keywords correspond to attributes of the cookie object.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/cgi/cookie.rb', line 77 def initialize(name = "", *value) @domain = nil @expires = nil if name.kind_of?(String) self.name = name self.path = (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "") @secure = false @httponly = false return super(value) end = name unless .has_key?("name") raise ArgumentError, "`name' required" end self.name = ["name"] value = Array(["value"]) # simple support for IE self.path = ["path"] || (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "") self.domain = ["domain"] @expires = ["expires"] @secure = ["secure"] == true @httponly = ["httponly"] == true super(value) end |
Instance Attribute Details
#domain ⇒ Object
Domain for which this cookie applies, as a String
126 127 128 |
# File 'lib/cgi/cookie.rb', line 126 def domain @domain end |
#expires ⇒ Object
Time at which this cookie expires, as a Time
136 137 138 |
# File 'lib/cgi/cookie.rb', line 136 def expires @expires end |
#httponly ⇒ Object
True if this cookie is httponly; false otherwise
140 141 142 |
# File 'lib/cgi/cookie.rb', line 140 def httponly @httponly end |
#name ⇒ Object
Name of this cookie, as a String
106 107 108 |
# File 'lib/cgi/cookie.rb', line 106 def name @name end |
#path ⇒ Object
Path for which this cookie applies, as a String
116 117 118 |
# File 'lib/cgi/cookie.rb', line 116 def path @path end |
#secure ⇒ Object
True if this cookie is secure; false otherwise
138 139 140 |
# File 'lib/cgi/cookie.rb', line 138 def secure @secure end |
Class Method Details
.parse(raw_cookie) ⇒ Object
Parse a raw cookie string into a hash of cookie-name=>Cookie pairs.
= CGI::Cookie.parse("raw_cookie_string")
# { "name1" => cookie1, "name2" => cookie2, ... }
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/cgi/cookie.rb', line 185 def self.parse() = Hash.new([]) return unless .split(/;\s?/).each do |pairs| name, values = pairs.split('=',2) next unless name and values values ||= "" values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) } if .has_key?(name) [name].concat(values) else [name] = Cookie.new(name, *values) end end end |
Instance Method Details
#inspect ⇒ Object
A summary of cookie string.
205 206 207 |
# File 'lib/cgi/cookie.rb', line 205 def inspect "#<CGI::Cookie: #{self.to_s.inspect}>" end |
#to_s ⇒ Object
Convert the Cookie to its string representation.
168 169 170 171 172 173 174 175 176 177 |
# File 'lib/cgi/cookie.rb', line 168 def to_s val = collect{|v| CGI.escape(v) }.join("&") buf = "#{@name}=#{val}".dup 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 @httponly buf end |
#value ⇒ Object
Returns the value or list of values for this cookie.
143 144 145 |
# File 'lib/cgi/cookie.rb', line 143 def value self end |
#value=(val) ⇒ Object
Replaces the value of this cookie with a new value or list of values.
148 149 150 |
# File 'lib/cgi/cookie.rb', line 148 def value=(val) replace(Array(val)) end |