class Openapi3Parser::Validators::UnexpectedFields
Public Class Methods
call(*args, **kwargs)
click to toggle source
# File lib/openapi3_parser/validators/unexpected_fields.rb, line 11 def self.call(*args, **kwargs) new.call(*args, **kwargs) end
Public Instance Methods
call(validatable, allowed_fields:, allow_extensions: true, raise_on_invalid: true)
click to toggle source
# File lib/openapi3_parser/validators/unexpected_fields.rb, line 15 def call(validatable, allowed_fields:, allow_extensions: true, raise_on_invalid: true) fields = unexpected_fields(validatable.input, allowed_fields, allow_extensions) return if fields.empty? if raise_on_invalid location_summary = validatable.context.location_summary raise Openapi3Parser::Error::UnexpectedFields, "Unexpected fields for #{location_summary}: "\ "#{fields.sentence_join}" else validatable.add_error( "Unexpected fields: #{fields.sentence_join}" ) end end
Private Instance Methods
unexpected_fields(input, allowed_fields, allow_extensions)
click to toggle source
# File lib/openapi3_parser/validators/unexpected_fields.rb, line 38 def unexpected_fields(input, allowed_fields, allow_extensions) extra_keys = input.keys - allowed_fields return extra_keys unless allow_extensions extra_keys.reject { |key| key =~ NodeFactory::EXTENSION_REGEX } end