1package openapi3 2 3// SchemaValidationOption describes options a user has when validating request / response bodies. 4type SchemaValidationOption func(*schemaValidationSettings) 5 6type schemaValidationSettings struct { 7 failfast bool 8 multiError bool 9 asreq, asrep bool // exclusive (XOR) fields 10} 11 12// FailFast returns schema validation errors quicker. 13func FailFast() SchemaValidationOption { 14 return func(s *schemaValidationSettings) { s.failfast = true } 15} 16 17func MultiErrors() SchemaValidationOption { 18 return func(s *schemaValidationSettings) { s.multiError = true } 19} 20 21func VisitAsRequest() SchemaValidationOption { 22 return func(s *schemaValidationSettings) { s.asreq, s.asrep = true, false } 23} 24func VisitAsResponse() SchemaValidationOption { 25 return func(s *schemaValidationSettings) { s.asreq, s.asrep = false, true } 26} 27 28func newSchemaValidationSettings(opts ...SchemaValidationOption) *schemaValidationSettings { 29 settings := &schemaValidationSettings{} 30 for _, opt := range opts { 31 opt(settings) 32 } 33 return settings 34} 35