lib/middleware/json_parse_errors.rb
module ZuoraConnect class JsonParseErrors def initialize(app) @app = app end def call(env) begin @app.call(env) rescue DynamicRailsError => error if env['HTTP_ACCEPT'] =~ /application\/json/ || env['CONTENT_TYPE'] =~ /application\/json/ return [ 400, { "Content-Type" => "application/json" }, [{"success": false, "reasons": [{"code": 50000090, "message": "Malformed json was submitted." }]}.to_json ] ] else raise error end end end # Note(hartley): remove once the minimum supported version of Rails is 5.2 class DynamicRailsError < StandardError def self.===(exception) if Rails.version >= "5.2" exception.is_a?(ActionDispatch::Http::Parameters::ParseError) else exception.is_a?(ActionDispatch::ParamsParser::ParseError) end end end end end