Module: Roda::RodaPlugins::JsonParser::RequestMethods
- Defined in:
- lib/roda/plugins/json_parser.rb
Instance Method Summary collapse
-
#POST ⇒ Object
If the Content-Type header in the request includes “json”, parse the request body as JSON.
Instance Method Details
#POST ⇒ Object
If the Content-Type header in the request includes “json”, parse the request body as JSON. Ignore an empty request body.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/roda/plugins/json_parser.rb', line 54 def POST env = @env if post_params = env["roda.json_params"] return post_params end unless (input = env["rack.input"]) && (content_type = self.content_type) && content_type.include?('json') return super end str = _read_json_input(input) return super if str.empty? begin json_params = parse_json(str) rescue roda_class.opts[:json_parser_error_handler].call(self) end wrap = roda_class.opts[:json_parser_wrap] if wrap == :always || (wrap == :unless_hash && !json_params.is_a?(Hash)) json_params = {"_json"=>json_params} end env["roda.json_params"] = json_params json_params end |