module Hanami::Middleware::BodyParser::ClassInterface

@api private @since 1.3.0

Constants

PARSER_METHODS

@api private @since 1.3.0

Public Instance Methods

for(parser) click to toggle source

@api private @since 1.3.0

# File lib/hanami/middleware/body_parser/class_interface.rb, line 13
def for(parser)
  parser =
    case parser
    when String, Symbol
      require_parser(parser)
    when Class
      parser.new
    else
      parser
    end

  ensure_parser parser

  parser
end

Private Instance Methods

ensure_parser(parser) click to toggle source

@api private @since 1.3.0

# File lib/hanami/middleware/body_parser/class_interface.rb, line 37
def ensure_parser(parser)
  unless PARSER_METHODS.all? { |method| parser.respond_to?(method) }
    raise InvalidParserError.new(parser)
  end
end
require_parser(parser) click to toggle source

@api private @since 1.3.0

# File lib/hanami/middleware/body_parser/class_interface.rb, line 45
def require_parser(parser)
  require "hanami/middleware/body_parser/#{parser}_parser"

  parser = Utils::String.classify(parser)
  Utils::Class.load!("Hanami::Middleware::BodyParser::#{parser}Parser").new
rescue LoadError, NameError
  raise UnknownParserError.new(parser)
end