Spec-Zone.ru › Ruby 3.1

класс CGI::Cookie

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

Class представляющий HTTP-куки.

Помимо своих специфичных полей и методов, экземпляр 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]

Домен, к которому относится этот куки, в виде String

expires[RW]

Time истечения срока действия этого куки, в виде Time

httponly[R]

True, если этот куки — httponly; false в противном случае

name[RW]

Имя этого куки, в виде String

path[RW]

Путь, к которому относится этот куки, в виде String

secure[R]

True, если этот куки — secure; 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
    @path = (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "")
    @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
  @path = options["path"] || (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "")
  @domain = options["domain"]
  @expires = options["expires"]
  @secure = options["secure"] == true
  @httponly = options["httponly"] == true

  super(value)
end

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

name_string

Имя куки; в этом формате нет domain или срока истечения. path берётся из переменной окружения SCRIPT_NAME, а secure — false.

*value

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

options_hash

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

name

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

value

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

path

путь, к которому относится этот куки. По умолчанию соответствует значению переменной окружения SCRIPT_NAME.

domain

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

expires

время истечения срока действия этого куки, как объект Time.

secure

является ли этот куки безопасным (по умолчанию false). Безопасные куки передаются только серверам HTTPS.

httponly

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

false).  HttpOnly cookies are not available to javascript.

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

Вызывает метод суперкласса Array::new
parse(raw_cookie) Показать исходный код
# File lib/cgi/cookie.rb, line 155
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
    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

Парсит строку raw cookie в словарь пар cookie-имя=>Cookie.

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

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

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

Устанавливает, является ли Cookie куки httponly или нет.

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

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

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

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

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

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

to_s() Показать исходный код
# File lib/cgi/cookie.rb, line 138
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

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

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

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

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

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

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

Spec-Zone.ru

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