# module OpenURI::Meta

Mixin for holding meta-information.

### Attributes

base_uri [RW]

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.

meta [R]

returns a `Hash` that represents header fields. The `Hash` keys are downcased for canonicalization. The `Hash` values are a field body. If there are multiple field with same field name, the field values are concatenated with a comma.

metas [R]

returns a `Hash` that represents header fields. The `Hash` keys are downcased for canonicalization. The `Hash` value are an array of field values.

status [RW]

returns an `Array` that consists of status code and message.

### Public Instance Methods

charset () { || ... }
Source

    # File lib/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

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 that case, “utf-8” is returned as defined by RFC6838 4.2.1

content_encoding ()
Source

    # File lib/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

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

The encodings are downcased for canonicalization.

content_type ()
Source

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

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

last_modified ()
Source

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

returns a `Time` that represents the Last-Modified field.