OpenURI::Meta
module OpenURI::Meta
Mixin用于保存元信息。
属性
base_uriRW
返回一个URI,它是数据中相对URI的基础。由于重定向,它可能与用户提供的URI不同。
metaR
返回表示标题字段的哈希。Hash密钥是为了规范化而降低的。哈希值是一个字段体。如果有多个字段具有相同的字段名称,则字段值将与逗号连接。
metasR
返回表示标题字段的哈希。Hash密钥是为了规范化而降低的。哈希值是一个字段值的数组。
statusRW
返回由状态码和消息组成的数组。
公共实例方法
charset() { || ... } Show source
在Content-Type字段中返回一个字符集参数。对于标准化来说它是低估的。
如果没有给出字符集参数但给出了一个块,则调用该块并返回结果。它可以用来猜测字符集。
如果没有给出charset参数和块,则返回nil,但HTTP中的文本类型除外。在这种情况下,按照RFC2616 3.7.1的规定返回“iso-8859-1”。
# File lib/open-uri.rb, line 532
def charset
type, *parameters = content_type_parse
if pair = parameters.assoc('charset')
pair.last.downcase
elsif block_given?
yield
elsif type && %r{\Atext/} =~ type &&
@base_uri && /\Ahttp\z/i =~ @base_uri.scheme
"iso-8859-1" # RFC2616 3.7.1
else
nil
end
end
content_encoding() Show source
以字符串数组的形式返回Content-Encoding字段中的编码列表。
编码降低了标准化。
# File lib/open-uri.rb, line 550
def content_encoding
vs = @metas['content-encoding']
if vs && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ (v = vs.join(', '))
v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
else
[]
end
end
content_type() Show source
返回MIME Content-Type的“type / subtype”。对于标准化来说它是低估的。内容类型参数被剥离。
# File lib/open-uri.rb, line 517
def content_type
type, *_ = content_type_parse
type || 'application/octet-stream'
end
last_modified() Show source
返回表示Last-Modified字段的时间。
# File lib/open-uri.rb, line 479
def last_modified
if vs = @metas['last-modified']
v = vs.join(', ')
Time.httpdate(v)
else
nil
end
end