Class: Pandadoc::Api::ParamsValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/pandadoc/api/params_validator.rb

Defined Under Namespace

Classes: ParameterTypeError, RequiredParameterError

Class Method Summary collapse

Class Method Details

.validate(params, validations) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/pandadoc/api/params_validator.rb', line 32

def self.validate(params, validations)
  valid_keys = validations.keys
  valid_params = params.keep_if { |key| valid_keys.include? key }

  validations.each_pair do |key, validators|
    if validators[:required] == true && valid_params[key].nil?
      raise RequiredParameterError.new('Missing required parameter', key)
    end

    validators_type_array = validators[:type].is_a?(Array) ? validators[:type] : [validators[:type]]
    if valid_params[key] && !validators_type_array.include?(valid_params[key].class)
      raise ParameterTypeError.new("Invalid parameter type, received #{valid_params[key].class} requested #{validators[:type]}", key, valid_params[:key].class, validators[:type])
    end
  end

  valid_params
end