lib/watchdocs/rails/middleware.rb in watchdocs-rails-0.1.4 vs lib/watchdocs/rails/middleware.rb in watchdocs-rails-0.2.0

- old
+ new

@@ -33,22 +33,22 @@ def catch_request(env) @report[:request] = { method: env['REQUEST_METHOD'], url: env['PATH_INFO'], - query_string_params: CGI.parse(env['QUERY_STRING']), - body: parse_body(env['rack.input'].read), + query_string_params: Rack::Utils.parse_nested_query(env['QUERY_STRING']), + body: parse_request_body(env['rack.input'].read), headers: request_headers(env) } end def catch_response(response) status, headers, body = *response @report[:response] = { status: status, headers: headers.to_hash.upcased_keys, - body: parse_body(body_string(body)) + body: parse_response_body(body_string(body)) } end def match_endpoint_pattern @report[:endpoint] = begin @@ -80,14 +80,26 @@ body_string = '' body.each { |line| body_string += line } body_string end - def parse_body(body) + def parse_response_body(body) return if body.empty? JSON.parse(body).filter_data rescue JSON::ParserError 'Invalid JSON' + end + + def parse_request_body(body) + return if body.empty? + JSON.parse(body).filter_data + rescue JSON::ParserError + begin + Rack::Utils.parse_nested_query(body) + .filter_data + rescue StandardError + 'Request body format not supported' + end end end end end