Class: Rack::Chunked

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
rack/rack/chunked.rb

Overview

Middleware that applies chunked transfer encoding to response bodies when the response does not include a Content-Length header.

Defined Under Namespace

Classes: Body

Constant Summary

Class Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Chunked) initialize(app)

Returns a new instance of Chunked



38
39
40
# File 'rack/rack/chunked.rb', line 38

def initialize(app)
  @app = app
end

Class Attribute Details

+ (void) key_space_limit Originally defined in module Utils

Returns the value of attribute key_space_limit

Instance Method Details

- (void) call(env)



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'rack/rack/chunked.rb', line 42

def call(env)
  status, headers, body = @app.call(env)
  headers = HeaderHash.new(headers)

  if env['HTTP_VERSION'] == 'HTTP/1.0' ||
     STATUS_WITH_NO_ENTITY_BODY.include?(status) ||
     headers['Content-Length'] ||
     headers['Transfer-Encoding']
    [status, headers, body]
  else
    headers.delete('Content-Length')
    headers['Transfer-Encoding'] = 'chunked'
    [status, headers, Body.new(body)]
  end
end