module Roda::RodaPlugins::JsonParser::RequestMethods
def POST
If the Content-Type header in the request includes "json",
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
def _read_json_input(input)
def _read_json_input(input) input.read end
def _read_json_input(input)
def _read_json_input(input) input.rewind str = input.read input.rewind str end
def parse_json(str)
def parse_json(str) args = [str] args << self if roda_class.opts[:json_parser_include_request] roda_class.opts[:json_parser_parser].call(*args) end