Sha256: 54f2ac91a829df57640c5d0cc2755b934450dc5d264b81dae2b35055e9d7d8dc

Contents?: true

Size: 766 Bytes

Versions: 45

Compression:

Stored size: 766 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) &&
         !headers['Content-Length'] &&
         !headers['Transfer-Encoding'] &&
         (body.respond_to?(:to_ary) || body.respond_to?(:to_str))

        body = [body] if body.respond_to?(:to_str) # rack 0.4 compat
        length = body.to_ary.inject(0) { |len, part| len + bytesize(part) }
        headers['Content-Length'] = length.to_s
      end

      [status, headers, body]
    end
  end
end

Version data entries

45 entries across 44 versions & 16 rubygems

Version Path
kjvarga-rack-1.0.0 lib/rack/content_length.rb
qoobaa-rack-1.0.0.1 lib/rack/content_length.rb
qoobaa-rack-1.0.2 lib/rack/content_length.rb
timocratic-rack-1.0.0 lib/rack/content_length.rb
rack-1.1.6 lib/rack/content_length.rb
rack-1.1.5 lib/rack/content_length.rb
rack-1.1.4 lib/rack/content_length.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/rack-1.1.3/lib/rack/content_length.rb
rack-1.1.3 lib/rack/content_length.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/rack-1.1.2/lib/rack/content_length.rb
rack-1.1.2 lib/rack/content_length.rb
rack-1.1.1 lib/rack/content_length.rb
rack-1.1.1.pre lib/rack/content_length.rb
eac-rack-1.1.1 lib/rack/content_length.rb
akamai_bookmarklet-0.1.2 vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb
middleman-0.13.1 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb
middleman-0.13.1 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb
akamai_bookmarklet-0.1.1 vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb
akamai_bookmarklet-0.1.0 vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb
rack-1.1.0 lib/rack/content_length.rb