Sha256: eea4f1e22d7a858e9916eca5bf168ea835227352c91012b0a6291a48a52a18b4
Contents?: true
Size: 1.1 KB
Versions: 3
Compression:
Stored size: 1.1 KB
Contents
#!/usr/bin/env ruby require 'rack' module Flapjack module Gateways class JSONAPI < Sinatra::Base module Middleware class JsonParamsParser < Struct.new(:app) def call(env) t = type(env) if ['POST', 'PATCH', 'DELETE'].include?(env["REQUEST_METHOD"]) && env['rack.input'] && !input_parsed?(env) && type_match?(t) env['rack.request.form_input'] = env['rack.input'] json_data = env['rack.input'].read env['rack.input'].rewind data = json_data.empty? ? {} : Flapjack.load_json(json_data) env['rack.request.form_hash'] = data end app.call(env) end def input_parsed? env env['rack.request.form_input'].eql?(env['rack.input']) end def type(env) return if env['CONTENT_TYPE'].nil? env['CONTENT_TYPE'].split(/\s*[;,]\s*/, 2).first end def type_match?(t) Flapjack::Gateways::JSONAPI::JSONAPI_MEDIA_TYPE.eql?(t) end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems