| Module | OpenURI::Meta |
| In: |
open-uri.rb
|
Mixin for holding meta-information.
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
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 open-uri.rb, line 410
410: def charset
411: type, *parameters = content_type_parse
412: if pair = parameters.assoc('charset')
413: pair.last.downcase
414: elsif block_given?
415: yield
416: elsif type && %r{\Atext/} =~ type &&
417: @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
418: "iso-8859-1" # RFC2616 3.7.1
419: else
420: nil
421: end
422: end
returns a list of encodings in Content-Encoding field as an Array of String. The encodings are downcased for canonicalization.
# File open-uri.rb, line 427
427: def content_encoding
428: v = @meta['content-encoding']
429: if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
430: v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
431: else
432: []
433: end
434: end
returns "type/subtype" which is MIME Content-Type. It is downcased for canonicalization. Content-Type parameters are stripped.
# File open-uri.rb, line 395
395: def content_type
396: type, *parameters = content_type_parse
397: type || 'application/octet-stream'
398: end