In Files

  • cgi.rb
  • cgi/session.rb

Parent

CGI::Cookie

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

Attributes

domain[RW]
expires[RW]
name[RW]
path[RW]
secure[R]
value[R]

Public Class Methods

new(name = "", *value) click to toggle source

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 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.

 
               # File 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

  options = name
  unless options.has_key?("name")
    raise ArgumentError, "`name' required"
  end

  @name = options["name"]
  @value = Array(options["value"])
  # simple support for IE
  if options["path"]
    @path = options["path"]
  else
    %r^(.*/)|.match(ENV["SCRIPT_NAME"])
    @path = ($1 or "")
  end
  @domain = options["domain"]
  @expires = options["expires"]
  @secure = options["secure"] == true ? true : false

  super(@value)
end
            
parse(raw_cookie) click to toggle source

Parse a raw cookie string into a hash of cookie-name=>Cookie pairs.

cookies = CGI::Cookie::parse("raw_cookie_string")
  # { "name1" => cookie1, "name2" => cookie2, ... }
 
               # File cgi.rb, line 875
def Cookie::parse(raw_cookie)
  cookies = Hash.new([])
  return cookies unless raw_cookie

  raw_cookie.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 cookies.has_key?(name)
      values = cookies[name].value + values
    end
    cookies[name] = Cookie::new(name, *values)
  end

  cookies
end
            

Public Instance Methods

secure=(val) click to toggle source

Set whether the Cookie is a secure cookie or not.

val must be a boolean.

 
               # File cgi.rb, line 831
def secure=(val)
  @secure = val if val == true or val == false
  @secure
end
            
to_s() click to toggle source

Convert the Cookie to its string representation.

 
               # File cgi.rb, line 841
def to_s
  buf = ""
  buf += @name + '='

  buf += @value.map { |v| CGI::escape(v) }.join("&")

  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=(val) click to toggle source
 
               # File cgi.rb, line 836
def value=(val)
  @value.replace(Array(val))
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus