Class: Acfs::Middleware::Serializer

Inherits:
Base
  • Object
show all
Defined in:
lib/acfs/middleware/serializer.rb

Overview

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

Direct Known Subclasses

JSON, MessagePack

Instance Attribute Summary

Attributes inherited from Base

#app, #options

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Acfs::Middleware::Base

Instance Method Details

#call(request) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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) ⇒ Object

Raises:

  • (NotImplementedError)


13
14
15
# File 'lib/acfs/middleware/serializer.rb', line 13

def decode(_data)
  raise NotImplementedError
end

#encode(_data) ⇒ Object

Raises:

  • (NotImplementedError)


9
10
11
# File 'lib/acfs/middleware/serializer.rb', line 9

def encode(_data)
  raise NotImplementedError
end

#mimeObject

Raises:

  • (NotImplementedError)


17
18
19
# File 'lib/acfs/middleware/serializer.rb', line 17

def mime
  raise NotImplementedError
end