Module: OpenURI::Meta

Module | OpenURI::Meta
In: | open-uri.rb

Mixin for holding meta-information.

### Methods

charset content_encoding content_type last_modified

### 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

base_uri | [RW] | returns a URI which is base of relative URIs in the data. It may differ from the URI supplied by a user because redirection.
meta | [R] | returns a Hash which represents header fields. The Hash keys are downcased for canonicalization.
status | [RW] | returns an Array which consists status code and message.

### Public Instance 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.

[Source]

    # File open-uri.rb, line 410
        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 String. The encodings are downcased for canonicalization.

[Source]

    # File open-uri.rb, line 427
        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.

[Source]

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

last_modified()

returns a Time which represents Last-Modified field.

[Source]

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

[Validate]