lib/apipie/validator.rb in apipie-rails-1.2.0 vs lib/apipie/validator.rb in apipie-rails-1.2.1

- old
+ new

@@ -36,10 +36,20 @@ return validator if validator end return nil end + def self.raise_if_missing_params + missing_params = [] + yield missing_params + if missing_params.size > 1 + raise ParamMultipleMissing.new(missing_params) + elsif missing_params.size == 1 + raise ParamMissing.new(missing_params.first) + end + end + # check if value is valid def valid?(value) if self.validate(value) @error_value = nil true @@ -343,17 +353,21 @@ end end def validate(value) return false if !value.is_a? Hash - @hash_params&.each do |k, p| - if Apipie.configuration.validate_presence? - raise ParamMissing.new(p) if p.required && !value.key?(k) + + BaseValidator.raise_if_missing_params do |missing| + @hash_params&.each do |k, p| + if Apipie.configuration.validate_presence? + missing << p if p.required && !value.key?(k) + end + if Apipie.configuration.validate_value? + p.validate(value[k]) if value.key?(k) + end end - if Apipie.configuration.validate_value? - p.validate(value[k]) if value.key?(k) - end end + return true end def process_value(value) if @hash_params && value