Sha256: 8bbfb779a14d1da9776cb2dc4a235da0b2665f9173dcfd86373bdf6b4194b623

Contents?: true

Size: 888 Bytes

Versions: 12

Compression:

Stored size: 888 Bytes

Contents

class OpenAPIParser::SchemaValidator
  class ObjectValidator < Base
    # @param [Hash] value
    # @param [OpenAPIParser::Schemas::Schema] schema
    def coerce_and_validate(value, schema)
      return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(Hash)

      return [value, nil] unless schema.properties

      required_set = schema.required ? schema.required.to_set : Set.new

      coerced_values = value.map do |name, v|
        s = schema.properties[name]
        coerced, err = validatable.validate_schema(v, s)
        return [nil, err] if err

        required_set.delete(name)
        [name, coerced]
      end

      return [nil, OpenAPIParser::NotExistRequiredKey.new(required_set.to_a, schema.object_reference)] unless required_set.empty?

      value.merge!(coerced_values.to_h) if @coerce_value

      [value, nil]
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
openapi_parser-0.2.7 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.6 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.5 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.4 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.3 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.2 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.1 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.2.0 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.1.9 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.1.8 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.1.7 lib/openapi_parser/schema_validators/object_validator.rb
openapi_parser-0.1.6 lib/openapi_parser/schema_validators/object_validator.rb