Sha256: 22453caf94ea14c40188e9cc511544e3ce8cf42acc20f99af2ea2dcaddf39b55
Contents?: true
Size: 1.1 KB
Versions: 6
Compression:
Stored size: 1.1 KB
Contents
#!/usr/bin/env ruby require 'rack' module Flapjack module Gateways class JSONAPI < Sinatra::Base module Rack class JsonParamsParser < Struct.new(:app) def call(env) t = type(env) if env['rack.input'] and not input_parsed?(env) and type_match?(t) env['rack.request.form_input'] = env['rack.input'] json_data = env['rack.input'].read env['rack.input'].rewind data = Oj.load(json_data) env['rack.request.form_hash'] = data.empty? ? {} : (('application/json-patch+json'.eql?(t)) ? {'ops' => data} : data) end app.call(env) end def input_parsed? env env['rack.request.form_input'].eql? env['rack.input'] end def type(env) return unless env['CONTENT_TYPE'] env['CONTENT_TYPE'].split(/\s*[;,]\s*/, 2).first.downcase end def type_match?(t) Flapjack::Gateways::JSONAPI::JSON_REQUEST_MIME_TYPES.include?(t) end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems