Class: CGI::Cookie
- Inherits:
-
Array
- Object
- Array
- CGI::Cookie
- Defined in:
- lib/rubysl/cgi/cgi.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
)
cgi.out("cookie" => [, ]) { "string" }
name = .name
values = .value
path = .path
domain = .domain
expires = .expires
secure = .secure
.name = 'name'
.value = ['value1', 'value2', ...]
.path = 'path'
.domain = 'domain'
.expires = Time.now + 30
.secure = true
Instance Attribute Summary collapse
-
#domain ⇒ Object
Returns the value of attribute domain.
-
#expires ⇒ Object
Returns the value of attribute expires.
-
#name ⇒ Object
Returns the value of attribute name.
-
#path ⇒ Object
Returns the value of attribute path.
-
#secure ⇒ Object
Returns the value of attribute secure.
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.
-
#to_s ⇒ Object
Convert the Cookie to its string representation.
- #value ⇒ Object
- #value=(val) ⇒ Object
Constructor Details
#initialize(name = "", *value) ⇒ Cookie
Create 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
Timeobject. - 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.
794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 |
# File 'lib/rubysl/cgi/cgi.rb', line 794 def initialize(name = "", *value) if name.kind_of?(String) @name = name @value = value %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
Returns the value of attribute domain.
825 826 827 |
# File 'lib/rubysl/cgi/cgi.rb', line 825 def domain @domain end |
#expires ⇒ Object
Returns the value of attribute expires.
825 826 827 |
# File 'lib/rubysl/cgi/cgi.rb', line 825 def expires @expires end |
#name ⇒ Object
Returns the value of attribute name.
825 826 827 |
# File 'lib/rubysl/cgi/cgi.rb', line 825 def name @name end |
#path ⇒ Object
Returns the value of attribute path.
825 826 827 |
# File 'lib/rubysl/cgi/cgi.rb', line 825 def path @path end |
#secure ⇒ Object
Returns the value of attribute secure.
826 827 828 |
# File 'lib/rubysl/cgi/cgi.rb', line 826 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, ... }
884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 |
# File 'lib/rubysl/cgi/cgi.rb', line 884 def Cookie::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) } if .has_key?(name) values = [name].value + values end [name] = Cookie::new(name, *values) end end |
Instance Method Details
#to_s ⇒ Object
Convert the Cookie to its string representation.
846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 |
# File 'lib/rubysl/cgi/cgi.rb', line 846 def to_s buf = "" buf += @name + '=' if @value.kind_of?(String) buf += CGI::escape(@value) else buf += @value.collect{|v| CGI::escape(v) }.join("&") end if @domain buf += '; domain=' + @domain end if @path buf += '; path=' + @path end if @expires buf += '; expires=' + CGI::rfc1123_date(@expires) end if @secure == true buf += '; secure' end buf end |
#value ⇒ Object
833 834 835 |
# File 'lib/rubysl/cgi/cgi.rb', line 833 def value @value end |
#value=(val) ⇒ Object
828 829 830 831 |
# File 'lib/rubysl/cgi/cgi.rb', line 828 def value=(val) @value = Array(val) replace(@value) end |