Sha256: cd7a2da4c378b2259de6f2eb58fccf604056057ac9fae462e8772a7fb8a9158e

Contents?: true

Size: 765 Bytes

Versions: 218

Compression:

Stored size: 765 Bytes

Contents

require 'rack/utils'

module Rack

  # Sets the Content-Length header on responses with fixed-length bodies.
  class ContentLength
    include Rack::Utils

    def initialize(app)
      @app = app
    end

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

      if !STATUS_WITH_NO_ENTITY_BODY.include?(status.to_i) &&
         !headers['Content-Length'] &&
         !headers['Transfer-Encoding'] &&
         body.respond_to?(:to_ary)

        obody = body
        body, length = [], 0
        obody.each { |part| body << part; length += bytesize(part) }
        obody.close if obody.respond_to?(:close)

        headers['Content-Length'] = length.to_s
      end

      [status, headers, body]
    end
  end
end

Version data entries

218 entries across 186 versions & 34 rubygems

Version Path
angular-rails4-templates-0.4.1 vendor/ruby/2.1.0/gems/rack-1.5.5/lib/rack/content_length.rb
angular-rails4-templates-0.4.0 vendor/ruby/2.1.0/gems/rack-1.5.5/lib/rack/content_length.rb
angular-rails4-templates-0.3.0 vendor/ruby/2.1.0/gems/rack-1.5.5/lib/rack/content_length.rb
classiccms-0.7.5 vendor/bundle/gems/rack-1.4.1/lib/rack/content_length.rb
classiccms-0.7.4 vendor/bundle/gems/rack-1.4.1/lib/rack/content_length.rb
classiccms-0.7.3 vendor/bundle/gems/rack-1.4.1/lib/rack/content_length.rb
active_mailer-0.0.10 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rack-1.4.5/lib/rack/content_length.rb
rack-1.4.7 lib/rack/content_length.rb
rack-1.5.5 lib/rack/content_length.rb
rack-1.4.6 lib/rack/content_length.rb
rack-1.5.4 lib/rack/content_length.rb
rack-1.5.3 lib/rack/content_length.rb
judge-2.0.5 vendor/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/content_length.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/1.9.1/gems/rack-1.5.2/lib/rack/content_length.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/rack-1.5.2/lib/rack/content_length.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/content_length.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/content_length.rb
nanumfont-rails-0.1 vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/content_length.rb
scout_realtime-1.0.5 lib/vendor/rack-1.5.2/lib/rack/content_length.rb
vagrant-tiktalik-0.0.3 vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/content_length.rb