class Rack::MediaType
Rack::MediaType разбирает медиа-тип и параметры из строки content_type
Константы
- SPLIT_PATTERN
Открытые методы класса
# 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)).
# 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.