Module: Philiprehberger::HeaderKit::AcceptEncoding
- Defined in:
- lib/philiprehberger/header_kit/accept_encoding.rb
Overview
Parses Accept-Encoding headers into structured encoding entries with quality values.
Constant Summary collapse
- QUALITY_PATTERN =
/\Aq\z/i
Class Method Summary collapse
-
.build(encodings) ⇒ String
Build an Accept-Encoding header string from an array of encoding hashes.
-
.parse(header) ⇒ Array<Hash>
Parse an Accept-Encoding header string.
Class Method Details
.build(encodings) ⇒ String
Build an Accept-Encoding header string from an array of encoding hashes.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/philiprehberger/header_kit/accept_encoding.rb', line 57 def self.build(encodings) return '' if encodings.nil? || encodings.empty? parts = encodings.map do |entry| encoding = entry[:encoding] quality = entry[:quality] if quality && quality < 1.0 "#{encoding};q=#{format_quality(quality)}" else encoding end end parts.join(', ') end |
.parse(header) ⇒ Array<Hash>
Parse an Accept-Encoding header string.
13 14 15 16 17 18 |
# File 'lib/philiprehberger/header_kit/accept_encoding.rb', line 13 def self.parse(header) return [] if header.nil? || header.strip.empty? entries = header.split(',').map { |entry| parse_entry(entry.strip) } entries.compact.sort_by { |e| [-e[:quality], entries.index(e)] } end |