模块 OpenURI::Meta

用于保存元信息的 Mixin。

属性

base_uri[RW]

返回一个 URI,它是数据中相对 URI 的基地址。由于重定向,它可能与用户提供的 URI 不同。

meta[R]

返回一个表示头部字段的 Hash。Hash 的键被转换为小写以进行规范化。Hash 的值是字段主体。如果存在多个具有相同字段名称的字段,则字段值用逗号连接。

metas[R]

返回一个表示头部字段的 Hash。Hash 的键被转换为小写以进行规范化。Hash 的值是字段值的数组。

status[RW]

返回一个由状态码和消息组成的数组。

公共实例方法

charset() { || ... } 点击切换源码

返回 Content-Type 字段中的 charset 参数。它被转换为小写以进行规范化。

如果未给出 charset 参数但给出了一个块,则调用该块并返回其结果。它可以用于猜测字符集。

如果没有给出 charset 参数和块,则返回 nil,但文本类型除外。在这种情况下,根据 RFC6838 4.2.1 的定义,返回 “utf-8”。

# File open-uri.rb, line 566
def charset
  type, *parameters = content_type_parse
  if pair = parameters.assoc('charset')
    pair.last.downcase
  elsif block_given?
    yield
  elsif type && %r{\Atext/} =~ type
    "utf-8" # RFC6838 4.2.1
  else
    nil
  end
end
content_encoding() 点击切换源码

以字符串数组的形式返回 Content-Encoding 字段中的编码列表。

编码被转换为小写以进行规范化。

# File open-uri.rb, line 583
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() 点击切换源码

返回 “type/subtype”,它是 MIME Content-Type。它被转换为小写以进行规范化。Content-Type 参数被剥离。

# File open-uri.rb, line 551
def content_type
  type, *_ = content_type_parse
  type || 'application/octet-stream'
end
last_modified() 点击切换源码

返回表示 Last-Modified 字段的 Time 对象。

# File open-uri.rb, line 520
def last_modified
  if vs = @metas['last-modified']
    v = vs.join(', ')
    Time.httpdate(v)
  else
    nil
  end
end