class Pandadoc::Api::ParamsValidator

Public Class Methods

validate(params, validations) click to toggle source
# 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