模組 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,但文字類型除外。在這種情況下,會傳回「utf-8」,如 RFC6838 4.2.1 所定義

# 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() 按一下以切換來源

傳回表示 Last-Modified 欄位的 Time

# 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