Class: StandardAPI::Middleware::QueryEncoding

Inherits:
Object
  • Object
show all
Defined in:
lib/standard_api/middleware/query_encoding.rb

Constant Summary collapse

MSGPACK_MIME_TYPE =
"application/msgpack".freeze
HTTP_METHOD_OVERRIDE_HEADER =
"HTTP_QUERY_ENCODING".freeze

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ QueryEncoding

Returns a new instance of QueryEncoding.



19
20
21
# File 'lib/standard_api/middleware/query_encoding.rb', line 19

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/standard_api/middleware/query_encoding.rb', line 23

def call(env)
  if !env[Rack::QUERY_STRING].empty? && env[HTTP_METHOD_OVERRIDE_HEADER] == MSGPACK_MIME_TYPE
    env[Rack::RACK_REQUEST_QUERY_STRING] = env[Rack::QUERY_STRING]
    env[Rack::RACK_REQUEST_QUERY_HASH] = MessagePack.unpack(CGI.unescape(env[Rack::QUERY_STRING]))
  end

  @app.call(env)
end