Sha256: 56f806c6c96e534c46f6418c5212024bb04cad44fd0901df4aab45386587e527

Contents?: true

Size: 942 Bytes

Versions: 21

Compression:

Stored size: 942 Bytes

Contents

# frozen-string-literal: true

#
class Roda
  module RodaPlugins
    # The drop_body plugin automatically drops the body and
    # Content-Type/Content-Length headers from the response if
    # the response status indicates that the response should
    # not include a body (response statuses 100, 101, 102, 204, 205,
    # and 304).
    module DropBody
      module ResponseMethods
        DROP_BODY_STATUSES = [100, 101, 102, 204, 205, 304].freeze

        # If the response status indicates a body should not be
        # returned, use an empty body and remove the Content-Length
        # and Content-Type headers.
        def finish
          r = super
          if DROP_BODY_STATUSES.include?(r[0])
            r[2] = EMPTY_ARRAY
            h = r[1]
            h.delete("Content-Length")
            h.delete("Content-Type")
          end
          r
        end
      end
    end

    register_plugin(:drop_body, DropBody)
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
roda-3.19.0 lib/roda/plugins/drop_body.rb
roda-3.18.0 lib/roda/plugins/drop_body.rb
roda-3.17.0 lib/roda/plugins/drop_body.rb
roda-3.16.0 lib/roda/plugins/drop_body.rb
roda-3.15.0 lib/roda/plugins/drop_body.rb
roda-3.14.1 lib/roda/plugins/drop_body.rb
roda-3.14.0 lib/roda/plugins/drop_body.rb
roda-3.13.0 lib/roda/plugins/drop_body.rb
roda-3.12.0 lib/roda/plugins/drop_body.rb
roda-3.11.0 lib/roda/plugins/drop_body.rb
roda-3.10.0 lib/roda/plugins/drop_body.rb
roda-3.9.0 lib/roda/plugins/drop_body.rb
roda-3.8.0 lib/roda/plugins/drop_body.rb
roda-3.7.0 lib/roda/plugins/drop_body.rb
roda-3.6.0 lib/roda/plugins/drop_body.rb
roda-3.5.0 lib/roda/plugins/drop_body.rb
roda-3.4.0 lib/roda/plugins/drop_body.rb
roda-3.3.0 lib/roda/plugins/drop_body.rb
roda-3.2.0 lib/roda/plugins/drop_body.rb
roda-3.1.0 lib/roda/plugins/drop_body.rb