Class: Async::HTTP::AcceptEncoding
- Inherits:
- 
      Middleware
      
        - Object
- Middleware
- Async::HTTP::AcceptEncoding
 
- Defined in:
- lib/async/http/accept_encoding.rb
Overview
Set a valid accept-encoding header and decode the response.
Constant Summary collapse
Instance Method Summary collapse
- #call(request) ⇒ Object
- 
  
    
      #initialize(app, wrappers = DEFAULT_WRAPPERS)  ⇒ AcceptEncoding 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of AcceptEncoding. 
Methods inherited from Middleware
Constructor Details
#initialize(app, wrappers = DEFAULT_WRAPPERS) ⇒ AcceptEncoding
Returns a new instance of AcceptEncoding.
| 34 35 36 37 38 39 | # File 'lib/async/http/accept_encoding.rb', line 34 def initialize(app, wrappers = DEFAULT_WRAPPERS) super(app) @accept_encoding = wrappers.keys.join(', ') @wrappers = wrappers end | 
Instance Method Details
#call(request) ⇒ Object
| 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # File 'lib/async/http/accept_encoding.rb', line 41 def call(request, *) request.headers['accept-encoding'] = @accept_encoding response = super if !response.body.empty? and content_encoding = response.headers['content-encoding'] encodings = content_encoding.split(/\s*,\s*/) body = response.body # We want to unwrap all encodings encodings.reverse_each do |name| if wrapper = @wrappers[name] body = wrapper.call(body) end end response.body = body end return response end |