Sha256: 254f91841f9dd5f4e5cad951b2a12bfd458d94aa477be126debef0b3fd7a74ee

Contents?: true

Size: 1.29 KB

Versions: 35

Compression:

Stored size: 1.29 KB

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,
    # and 304).  For response status 205, the body and Content-Type
    # headers are dropped, but the Content-length header is set to
    # '0' instead of being dropped.
    module DropBody
      module ResponseMethods
        DROP_BODY_STATUSES = [100, 101, 102, 204, 205, 304].freeze
        RodaPlugins.deprecate_constant(self, :DROP_BODY_STATUSES)

        # 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
          case r[0]
          when 100, 101, 102, 204, 304
            r[2] = EMPTY_ARRAY
            h = r[1]
            h.delete("Content-Length")
            h.delete("Content-Type")
          when 205
            r[2] = EMPTY_ARRAY
            h = r[1]
            h["Content-Length"] = '0'
            h.delete("Content-Type")
          end
          r
        end
      end
    end

    register_plugin(:drop_body, DropBody)
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
roda-3.53.0 lib/roda/plugins/drop_body.rb
roda-3.52.0 lib/roda/plugins/drop_body.rb
roda-3.51.0 lib/roda/plugins/drop_body.rb
roda-3.50.0 lib/roda/plugins/drop_body.rb
roda-3.49.0 lib/roda/plugins/drop_body.rb
roda-3.48.0 lib/roda/plugins/drop_body.rb
roda-3.47.0 lib/roda/plugins/drop_body.rb
roda-3.46.0 lib/roda/plugins/drop_body.rb
roda-3.45.0 lib/roda/plugins/drop_body.rb
roda-3.44.0 lib/roda/plugins/drop_body.rb
roda-3.43.1 lib/roda/plugins/drop_body.rb
roda-3.43.0 lib/roda/plugins/drop_body.rb
roda-3.42.0 lib/roda/plugins/drop_body.rb
roda-3.41.0 lib/roda/plugins/drop_body.rb
roda-3.40.0 lib/roda/plugins/drop_body.rb
roda-3.39.0 lib/roda/plugins/drop_body.rb
roda-3.38.0 lib/roda/plugins/drop_body.rb
roda-3.37.0 lib/roda/plugins/drop_body.rb
roda-3.36.0 lib/roda/plugins/drop_body.rb
roda-3.35.0 lib/roda/plugins/drop_body.rb