module Sinatra::RequiredParams

def _required_params(p, *keys)

def _required_params(p, *keys)
  keys.each do |key|
    if key.is_a?(Hash)
      _required_params(p, *key.keys)
      key.each do |k, v|
        _required_params(p[k.to_s], v)
      end
    elsif key.is_a?(Array)
      _required_params(p, *key)
    else
      halt 400 unless p.respond_to?(:key?) && p&.key?(key.to_s)
    end
  end
  true
end

def required_params(*keys)

def required_params(*keys)
  _required_params(params, *keys)
end