模块 OpenURI::Meta

用于保存元信息的混入。

属性

base_uri[RW]

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

meta[R]

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

metas[R]

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

status[RW]

返回一个 Array,它包含状态代码和消息。

公共实例方法

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

返回 Content-Type 字段中的字符集参数。它被小写以进行规范化。

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

如果字符集参数和块都没有给出,则返回 nil,除了文本类型。在这种情况下,根据 RFC6838 4.2.1 返回“utf-8”。

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

返回“类型/子类型”,它是 MIME Content-Type。它被小写以进行规范化。Content-Type 参数被剥离。

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

返回一个 Time,它表示 Last-Modified 字段。

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