class Acfs::Middleware::Serializer

A base middleware that does not modify request or response. Can be used as super class for custom middleware implementations.

Public Instance Methods

call(request) click to toggle source
# File lib/acfs/middleware/serializer.rb, line 21
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
decode(_data) click to toggle source
# File lib/acfs/middleware/serializer.rb, line 13
def decode(_data)
  raise NotImplementedError
end
encode(_data) click to toggle source
# File lib/acfs/middleware/serializer.rb, line 9
def encode(_data)
  raise NotImplementedError
end
mime() click to toggle source
# File lib/acfs/middleware/serializer.rb, line 17
def mime
  raise NotImplementedError
end