Sha256: 44c926e17e045083b53ed3427fa3a96cd3faad5476baac3c244ad0de5de43580

Contents?: true

Size: 970 Bytes

Versions: 22

Compression:

Stored size: 970 Bytes

Contents

module Acfs
  module Middleware
    # A base middleware that does not modify request or response.
    # Can be used as super class for custom middleware implementations.
    #
    class Serializer < Base
      def encode(_data)
        raise NotImplementedError
      end

      def decode(_data)
        raise NotImplementedError
      end

      def mime
        raise NotImplementedError
      end

      def call(request)
        unless request.headers['Content-Type']
          request.body = encode request.data
          request.headers['Content-Type'] = mime
        end

        accept = request.headers['Accept'].to_s.split(',')
        accept << "#{mime};q=#{options.fetch(:q, 1)}"
        request.headers['Accept'] = accept.join(',')

        request.on_complete do |response, nxt|
          response.data = decode response.body if mime == response.content_type

          nxt.call response
        end

        app.call(request)
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
acfs-1.3.2 lib/acfs/middleware/serializer.rb
acfs-1.3.1 lib/acfs/middleware/serializer.rb
acfs-1.3.0 lib/acfs/middleware/serializer.rb
acfs-1.2.1 lib/acfs/middleware/serializer.rb
acfs-0.50.0 lib/acfs/middleware/serializer.rb
acfs-1.2.0 lib/acfs/middleware/serializer.rb
acfs-0.49.1 lib/acfs/middleware/serializer.rb
acfs-1.1.1 lib/acfs/middleware/serializer.rb
acfs-0.49.0 lib/acfs/middleware/serializer.rb
acfs-1.1.0 lib/acfs/middleware/serializer.rb
acfs-0.48.2 lib/acfs/middleware/serializer.rb
acfs-1.0.1 lib/acfs/middleware/serializer.rb
acfs-0.48.1 lib/acfs/middleware/serializer.rb
acfs-1.0.0 lib/acfs/middleware/serializer.rb
acfs-0.48.0 lib/acfs/middleware/serializer.rb
acfs-0.47.0 lib/acfs/middleware/serializer.rb
acfs-0.46.0 lib/acfs/middleware/serializer.rb
acfs-0.45.0 lib/acfs/middleware/serializer.rb
acfs-0.44.0 lib/acfs/middleware/serializer.rb
acfs-0.43.2 lib/acfs/middleware/serializer.rb