модуль Net::HTTPHeader
Модуль HTTPHeader определяет методы для чтения и записи заголовков HTTP.
Он используется в качестве миксина другими классами, чтобы обеспечить доступ к значениям заголовков HTTP как к элементам массива. В отличие от прямого доступа к массивам, HTTPHeader обеспечивает доступ по ключам, не чувствительным к регистру. Он также предоставляет методы для доступа к значениям распространённых заголовков HTTP в более удобных форматах.
Публичные методы экземпляров
# File lib/net/http/header.rb, line 37
def [](key)
a = @header[key.downcase] or return nil
a.join(', ')
end Возвращает поле заголовка, соответствующее ключу, не чувствительному к регистру. Например, ключ «Content-Type» может вернуть «text/html»
# File lib/net/http/header.rb, line 43
def []=(key, val)
unless val
@header.delete key.downcase
return val
end
set_field(key, val)
end Устанавливает поле заголовка, соответствующее ключу, не чувствительному к регистру.
# File lib/net/http/header.rb, line 66
def add_field(key, val)
if @header.key?(key.downcase)
append_field_value(@header[key.downcase], val)
else
set_field(key, val)
end
end - Ruby 1.8.3
-
Добавляет значение в поле заголовка с заданным именем, вместо того, чтобы его перезаписывать. Второй аргумент
valдолжен быть строкой. См. также []=, [] и get_fields.request.add_field 'X-My-Header', 'a' p request['X-My-Header'] #=> "a" p request.get_fields('X-My-Header') #=> ["a"] request.add_field 'X-My-Header', 'b' p request['X-My-Header'] #=> "a, b" p request.get_fields('X-My-Header') #=> ["a", "b"] request.add_field 'X-My-Header', 'c' p request['X-My-Header'] #=> "a, b, c" p request.get_fields('X-My-Header') #=> ["a", "b", "c"]
# File lib/net/http/header.rb, line 12
def initialize_http_header(initheader)
@header = {}
return unless initheader
initheader.each do |key, value|
warn "net/http: warning: duplicated HTTP header: #{key}" if key?(key) and $VERBOSE
if value.nil?
warn "net/http: warning: nil HTTP header: #{key}" if $VERBOSE
else
value = value.strip # raise error for invalid byte sequences
if value.count("\r\n") > 0
raise ArgumentError, 'header field value cannot include CR/LF'
end
@header[key.downcase] = [value]
end
end
end
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.