Module: HTTP::Accept::Encodings
- Defined in:
- lib/http/accept/encodings.rb
Defined Under Namespace
Classes: ContentCoding
Constant Summary collapse
- CONTENT_CODING =
TOKEN
- QVALUE =
/0(\.[0-9]{0,3})?|1(\.[0]{0,3})?/
- CODINGS =
/(?<encoding>#{CONTENT_CODING})(;q=(?<q>#{QVALUE}))?/
- HTTP_ACCEPT_ENCODING =
'HTTP_ACCEPT_ENCODING'.freeze
- WILDCARD_CONTENT_CODING =
ContentCoding.new('*', nil).freeze
- IDENTITY_CONTENT_CODING =
ContentCoding.new('identity', nil).freeze
Class Method Summary collapse
-
.browser_preferred_content_codings(env) ⇒ Object
Parse the list of browser preferred content codings and return ordered by priority.
- .parse(text) ⇒ Object
Class Method Details
.browser_preferred_content_codings(env) ⇒ Object
Parse the list of browser preferred content codings and return ordered by priority. If no ‘Accept-Encoding:` header is specified, the behaviour is the same as if `Accept-Encoding: *` was provided, and if a blank `Accept-Encoding:` header value is specified, the behaviour is the same as if `Accept-Encoding: identity` was provided (according to RFC).
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/http/accept/encodings.rb', line 60 def self.browser_preferred_content_codings(env) if accept_content_codings = env[HTTP_ACCEPT_ENCODING]&.strip if accept_content_codings.empty? # "An Accept-Encoding header field with a combined field-value that is # empty implies that the user agent does not want any content-coding in # response." return [IDENTITY_CONTENT_CODING] else return HTTP::Accept::Encodings.parse(accept_content_codings) end end # "If no Accept-Encoding field is in the request, any content-coding # is considered acceptable by the user agent." return [WILDCARD_CONTENT_CODING] end |
.parse(text) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/http/accept/encodings.rb', line 43 def self.parse(text) scanner = StringScanner.new(text) encodings = ContentCoding.parse(scanner) return Sort.by_quality_factor(encodings) end |