class Openapi3Parser::Validators::MutuallyExclusiveFields
Public Class Methods
call(*args, **kwargs)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 11 def self.call(*args, **kwargs) new.call(*args, **kwargs) end
Public Instance Methods
call(validatable, mutually_exclusive_fields:, raise_on_invalid: true)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 15 def call(validatable, mutually_exclusive_fields:, raise_on_invalid: true) mutually_exclusive = MutuallyExclusiveFieldErrors.new( mutually_exclusive_fields, validatable.input ) handle_required_errors(validatable, mutually_exclusive.required_errors, raise_on_invalid) handle_exclusive_errors(validatable, mutually_exclusive.exclusive_errors, raise_on_invalid) end
Private Instance Methods
handle_exclusive_errors(validatable, exclusive_errors, raise_on_invalid)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 47 def handle_exclusive_errors(validatable, exclusive_errors, raise_on_invalid) return unless exclusive_errors.any? if raise_on_invalid location_summary = validatable.context.location_summary raise Error::UnexpectedFields, "Mutually exclusive fields for "\ "#{location_summary}: "\ "#{exclusive_errors.first}" else validatable.add_errors(exclusive_errors) end end
handle_required_errors(validatable, required_errors, raise_on_invalid)
click to toggle source
# File lib/openapi3_parser/validators/mutually_exclusive_fields.rb, line 32 def handle_required_errors(validatable, required_errors, raise_on_invalid) return unless required_errors.any? if raise_on_invalid location_summary = validatable.context.location_summary raise Error::MissingFields, "Mutually exclusive fields for "\ "#{location_summary}: #{required_errors.first}" else validatable.add_errors(required_errors) end end