Spec-Zone.ru › Ruby / Rack

class Rack::MediaType

Rack::MediaType разбирает медиа-тип и параметры из строки content_type

Константы

SPLIT_PATTERN

Открытые методы класса

params (content_type) Показать исходный код
# File lib/rack/media_type.rb, line 34
def params(content_type)
  return {} if content_type.nil? || content_type.empty?

  content_type.split(SPLIT_PATTERN)[1..-1].each_with_object({}) do |s, hsh|
    s.strip!
    k, v = s.split('=', 2)
    k.downcase!
    hsh[k] = strip_doublequotes(v)
  end
end

Параметры медиа-типа, указанные в CONTENT_TYPE, в виде Hash или пустой Hash, если CONTENT_TYPE не задан или параметры медиа-типа отсутствуют. Например, если CONTENT_TYPE имеет значение “text/plain;charset=utf-8”, этот метод возвращает следующий Hash:

{ 'charset' => 'utf-8' }

Если у параметров нет значения, они будут возвращены в Hash с пустыми строками (например, “text/plain;charset=” вернёт { ‘charset’ => ” }, а “text/plain;charset” вернёт { ‘charset’ => ” }, аналогично парсеру параметров запроса (за исключением последнего случая, в котором вместо этого возвращается nil)).

type (content_type) Показать исходный код
# File lib/rack/media_type.rb, line 16
def type(content_type)
  return nil unless content_type && !content_type.empty?
  type = content_type.split(SPLIT_PATTERN, 2).first
  type.rstrip!
  type.downcase!
  type
end

Часть заголовка CONTENT_TYPE, содержащая медиа-тип (тип/подтип), без параметров медиа-типа. Например, если CONTENT_TYPE имеет значение “text/plain;charset=utf-8”, медиа-тип — “text/plain”.

Подробнее об использовании медиа-типов в HTTP см. на странице: www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7

© 2007-2021 Leah Neukirchen
Licensed under the MIT License.

Spec-Zone.ru

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