module Goliath::Rack::Params::Parser
Public Instance Methods
retrieve_params(env)
click to toggle source
# File lib/actn/api/goliath/params.rb, line 18 def retrieve_params(env) params = env['params'] || {} begin params.merge!(::Rack::Utils.parse_nested_query(env['QUERY_STRING'])) if env['rack.input'] post_params = ::Rack::Utils::Multipart.parse_multipart(env) unless post_params body = env['rack.input'].read env['rack.input'].rewind unless body.empty? post_params = case(env['CONTENT_TYPE']) when URL_ENCODED then ::Rack::Utils.parse_nested_query(body) when JSON_ENCODED then json = Oj.load(body) if json.is_a?(Hash) json else {'_json' => json} end else {} end else post_params = {} end end params = { 'query' => params, 'data' => post_params } end rescue StandardError => e raise Goliath::Validation::BadRequestError, "Invalid parameters: #{e.class.to_s}" end params end