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
cookie1 = CGI::Cookie.new("name", "value1", "value2", ...)
cookie1 = CGI::Cookie.new("name" => "name", "value" => "value")
cookie1 = CGI::Cookie.new('name' => 'name',
'value' => ['value1', 'value2', ...],
'path' => 'path', # optional
'domain' => 'domain', # optional
'expires' => Time.now, # optional
'secure' => true # optional
)
cgi.out("cookie" => [cookie1, cookie2]) { "string" }
name = cookie1.name
values = cookie1.value
path = cookie1.path
domain = cookie1.domain
expires = cookie1.expires
secure = cookie1.secure
cookie1.name = 'name'
cookie1.value = ['value1', 'value2', ...]
cookie1.path = 'path'
cookie1.domain = 'domain'
cookie1.expires = Time.now + 30
cookie1.secure = true
Constant Summary collapse
- @@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
. -
#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_NAME
environment 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 the value of the
SCRIPT_NAME
environment variable. - 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 (default to false). Secure cookies are only transmitted to HTTPS servers.
These keywords correspond to attributes of the cookie object.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/cgi/cookie.rb', line 65 def initialize(name = "", *value) @domain = nil @expires = nil if name.kind_of?(String) @name = name %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") @secure = false return super(value) end = name unless .has_key?("name") raise ArgumentError, "`name' required" end @name = ["name"] value = Array(["value"]) # simple support for IE if ["path"] @path = ["path"] else %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") end @domain = ["domain"] @expires = ["expires"] @secure = ["secure"] == true ? true : false super(value) end |
Instance Attribute Details
#domain ⇒ Object
Domain for which this cookie applies, as a String
102 103 104 |
# File 'lib/cgi/cookie.rb', line 102 def domain @domain end |
#expires ⇒ Object
Time at which this cookie expires, as a Time
104 105 106 |
# File 'lib/cgi/cookie.rb', line 104 def expires @expires end |
#name ⇒ Object
Name of this cookie, as a String
98 99 100 |
# File 'lib/cgi/cookie.rb', line 98 def name @name end |
#path ⇒ Object
Path for which this cookie applies, as a String
100 101 102 |
# File 'lib/cgi/cookie.rb', line 100 def path @path end |
#secure ⇒ Object
True if this cookie is secure; false otherwise
106 107 108 |
# File 'lib/cgi/cookie.rb', line 106 def secure @secure end |
Class Method Details
.parse(raw_cookie) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/cgi/cookie.rb', line 143 def self.parse() = Hash.new([]) return unless .split(/[;,]\s?/).each do |pairs| name, values = pairs.split('=',2) next unless name and values name = CGI.unescape(name) values ||= "" values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) } if .has_key?(name) values = [name].value + values end [name] = Cookie.new(name, *values) end end |
Instance Method Details
#inspect ⇒ Object
A summary of cookie string.
163 164 165 |
# File 'lib/cgi/cookie.rb', line 163 def inspect "#<CGI::Cookie: #{self.to_s.inspect}>" end |
#to_s ⇒ Object
Convert the Cookie to its string representation.
127 128 129 130 131 132 133 134 135 |
# File 'lib/cgi/cookie.rb', line 127 def to_s val = collect{|v| CGI.escape(v) }.join("&") buf = "#{@name}=#{val}" buf << "; domain=#{@domain}" if @domain buf << "; path=#{@path}" if @path buf << "; expires=#{CGI::rfc1123_date(@expires)}" if @expires buf << "; secure" if @secure == true buf end |
#value ⇒ Object
Returns the value or list of values for this cookie.
109 110 111 |
# File 'lib/cgi/cookie.rb', line 109 def value self end |
#value=(val) ⇒ Object
Replaces the value of this cookie with a new value or list of values.
114 115 116 |
# File 'lib/cgi/cookie.rb', line 114 def value=(val) replace(Array(val)) end |