lib/hanami/middleware/body_parser.rb in hanami-router-1.3.2 vs lib/hanami/middleware/body_parser.rb in hanami-router-2.0.0.alpha1

- old
+ new

@@ -1,34 +1,37 @@ -require 'hanami/utils/hash' -require_relative 'body_parser/class_interface' +# frozen_string_literal: true +require "hanami/utils/hash" +require "hanami/middleware/error" +require_relative "body_parser/class_interface" + module Hanami module Middleware # @since 1.3.0 # @api private class BodyParser # @since 1.3.0 # @api private - CONTENT_TYPE = 'CONTENT_TYPE'.freeze + CONTENT_TYPE = "CONTENT_TYPE" # @since 1.3.0 # @api private MEDIA_TYPE_MATCHER = /\s*[;,]\s*/.freeze # @since 1.3.0 # @api private - RACK_INPUT = 'rack.input'.freeze + RACK_INPUT = "rack.input" # @since 1.3.0 # @api private - ROUTER_PARAMS = 'router.params'.freeze + ROUTER_PARAMS = "router.params" # @api private - ROUTER_PARSED_BODY = 'router.parsed_body'.freeze + ROUTER_PARSED_BODY = "router.parsed_body" # @api private - FALLBACK_KEY = '_'.freeze + FALLBACK_KEY = "_" extend ClassInterface def initialize(app, parsers) @app = app @@ -53,22 +56,22 @@ def build_parsers(parser_names) parser_names = Array(parser_names) return {} if parser_names.empty? - parser_names.each_with_object({}) { |name, parsers| + parser_names.each_with_object({}) do |name, parsers| parser = self.class.for(name) parser.mime_types.each do |mime| parsers[mime] = parser end - } + end end # @api private def _symbolize(body) - if body.is_a?(Hash) + if body.is_a?(::Hash) Utils::Hash.deep_symbolize(body) else { FALLBACK_KEY => body } end end @@ -80,12 +83,13 @@ ].parse(body) end # @api private def media_type(env) - if ct = content_type(env) - ct.split(MEDIA_TYPE_MATCHER, 2).first.downcase - end + ct = content_type(env) + return unless ct + + ct.split(MEDIA_TYPE_MATCHER, 2).first.downcase end # @api private def content_type(env) content_type = env[CONTENT_TYPE]