Mixin for holding meta-information.

Methods
C
L
Constants
RE_LWS = /[\r\n\t ]+/n
 
RE_TOKEN = %r{[^\x00- ()<>@,;:\\"/\[\]?={}\x7f]+}n
 
RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
 
RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
 
Attributes
[RW] base_uri

returns a URI that is the base of relative URIs in the data. It may differ from the URI supplied by a user due to redirection.

[R] meta

returns a Hash that represents header fields. The Hash keys are downcased for canonicalization.

[RW] status

returns an Array that consists of status code and message.

Instance Public methods
charset()

returns a charset parameter in Content-Type field. It is downcased for canonicalization.

If charset parameter is not given but a block is given, the block is called and its result is returned. It can be used to guess charset.

If charset parameter and block is not given, nil is returned except text type in HTTP. In that case, “iso-8859-1” is returned as defined by RFC2616 3.7.1.

# File ../ruby/lib/open-uri.rb, line 497
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()

Returns a list of encodings in Content-Encoding field as an array of strings.

The encodings are downcased for canonicalization.

# File ../ruby/lib/open-uri.rb, line 515
def content_encoding
  v = @meta['content-encoding']
  if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
    v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
  else
    []
  end
end
content_type()

returns “type/subtype” which is MIME Content-Type. It is downcased for canonicalization. Content-Type parameters are stripped.

# File ../ruby/lib/open-uri.rb, line 482
def content_type
  type, *_ = content_type_parse
  type || 'application/octet-stream'
end
last_modified()

returns a Time that represents the Last-Modified field.

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