Spec-Zone.ru › Ruby 2.3

класс CGI::Cookie

Родитель:
Массив

Класс, представляющий HTTP-cookie.

Помимо собственных полей и методов, экземпляр Cookie является делегатом к массиву своих значений.

См. RFC 2965.

Примеры использования

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
                          'httponly' => 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
httponly = cookie1.httponly

cookie1.name     = 'name'
cookie1.value    = ['value1', 'value2', ...]
cookie1.path     = 'path'
cookie1.domain   = 'domain'
cookie1.expires  = Time.now + 30
cookie1.secure   = true
cookie1.httponly = true

Атрибуты

domain[RW]

Домен, к которому относится данный cookie, в формате String

expires[RW]

Время истечения срока действия данного cookie в формате Time

httponly[R]

True, если cookie является httponly; false в противном случае

name[RW]

Имя cookie в формате String

path[RW]

Путь, к которому относится данный cookie, в формате String

secure[R]

True, если cookie является безопасным; false в противном случае

Публичные методы класса

new(name_string,*value) Показать исходный код
new(options_hash)
# File lib/cgi/cookie.rb, line 71
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
    @httponly = 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
  @httponly = options["httponly"] == true

  super(value)
end

Создаёт новый объект CGI::Cookie.

name_string

Имя cookie; в данном случае нет домена или срока действия. Путь path определяется из переменной среды SCRIPT_NAME , а secure имеет значение false.

*value

значение или список значений cookie

options_hash

Словарь (Hash) параметров для инициализации данного Cookie. Возможные параметры:

name

имя cookie. Обязательно.

value

значение или список значений cookie.

path

путь, к которому относится данный cookie. По умолчанию используется значение переменной среды SCRIPT_NAME.

domain

домен, к которому относится cookie.

expires

время истечения срока действия cookie в формате объекта Time.

secure

устанавливает, является ли cookie защищённым (по умолчанию false). Защищённые cookies передаются только по HTTPS.

httponly

устанавливает, является ли cookie HttpOnly (по умолчанию

false).  HttpOnly cookies are not available to javascript.

Эти ключевые слова соответствуют атрибутам объекта cookie.

Вызов метода суперкласса Array.new
parse(raw_cookie) Показать исходный код
# File lib/cgi/cookie.rb, line 161
def self.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,@@accept_charset) }
    if cookies.has_key?(name)
      values = cookies[name].value + values
    end
    cookies[name] = Cookie.new(name, *values)
  end

  cookies
end

Парсит строку cookie в словарь cookie-name=>Cookie.

cookies = CGI::Cookie.parse("raw_cookie_string")
  # { "name1" => cookie1, "name2" => cookie2, ... }

Публичные методы экземпляров

httponly=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 139
def httponly=(val)
  @httponly = !!val
end

Устанавливает, является ли cookie httponly.

val должно быть булевым значением.

inspect() Показать исходный код
# File lib/cgi/cookie.rb, line 181
def inspect
  "#<CGI::Cookie: #{self.to_s.inspect}>"
end

Краткое описание cookie.

secure=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 131
def secure=(val)
  @secure = val if val == true or val == false
  @secure
end

Устанавливает, является ли cookie безопасным.

val должно быть булевым значением.

to_s() Показать исходный код
# File lib/cgi/cookie.rb, line 144
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
  buf << "; HttpOnly"          if @httponly
  buf
end

Преобразует Cookie в строковое представление.

value() Показать исходный код
# File lib/cgi/cookie.rb, line 119
def value
  self
end

Возвращает значение или список значений данного cookie.

value=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 124
def value=(val)
  replace(Array(val))
end

Заменяет значение данного cookie новым значением или списком значений.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API