mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 20:22:25 -05:00 
			
		
		
		
	[chore] Bump go swagger (#2871)
* bump go swagger version * bump swagger version
This commit is contained in:
		
					parent
					
						
							
								3a369d834a
							
						
					
				
			
			
				commit
				
					
						fd8a724e77
					
				
			
		
					 251 changed files with 10841 additions and 11896 deletions
				
			
		
							
								
								
									
										260
									
								
								vendor/github.com/go-openapi/validate/schema.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										260
									
								
								vendor/github.com/go-openapi/validate/schema.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -24,32 +24,32 @@ import ( | |||
| 	"github.com/go-openapi/swag" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	specSchemaType    = reflect.TypeOf(&spec.Schema{}) | ||||
| 	specParameterType = reflect.TypeOf(&spec.Parameter{}) | ||||
| 	specHeaderType    = reflect.TypeOf(&spec.Header{}) | ||||
| 	// specItemsType     = reflect.TypeOf(&spec.Items{}) | ||||
| ) | ||||
| 
 | ||||
| // SchemaValidator validates data against a JSON schema | ||||
| type SchemaValidator struct { | ||||
| 	Path         string | ||||
| 	in           string | ||||
| 	Schema       *spec.Schema | ||||
| 	validators   []valueValidator | ||||
| 	validators   [8]valueValidator | ||||
| 	Root         interface{} | ||||
| 	KnownFormats strfmt.Registry | ||||
| 	Options      SchemaValidatorOptions | ||||
| 	Options      *SchemaValidatorOptions | ||||
| } | ||||
| 
 | ||||
| // AgainstSchema validates the specified data against the provided schema, using a registry of supported formats. | ||||
| // | ||||
| // When no pre-parsed *spec.Schema structure is provided, it uses a JSON schema as default. See example. | ||||
| func AgainstSchema(schema *spec.Schema, data interface{}, formats strfmt.Registry, options ...Option) error { | ||||
| 	res := NewSchemaValidator(schema, nil, "", formats, options...).Validate(data) | ||||
| 	res := NewSchemaValidator(schema, nil, "", formats, | ||||
| 		append(options, WithRecycleValidators(true), withRecycleResults(true))..., | ||||
| 	).Validate(data) | ||||
| 	defer func() { | ||||
| 		pools.poolOfResults.RedeemResult(res) | ||||
| 	}() | ||||
| 
 | ||||
| 	if res.HasErrors() { | ||||
| 		return errors.CompositeValidationError(res.Errors...) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  | @ -57,6 +57,15 @@ func AgainstSchema(schema *spec.Schema, data interface{}, formats strfmt.Registr | |||
| // | ||||
| // Panics if the provided schema is invalid. | ||||
| func NewSchemaValidator(schema *spec.Schema, rootSchema interface{}, root string, formats strfmt.Registry, options ...Option) *SchemaValidator { | ||||
| 	opts := new(SchemaValidatorOptions) | ||||
| 	for _, o := range options { | ||||
| 		o(opts) | ||||
| 	} | ||||
| 
 | ||||
| 	return newSchemaValidator(schema, rootSchema, root, formats, opts) | ||||
| } | ||||
| 
 | ||||
| func newSchemaValidator(schema *spec.Schema, rootSchema interface{}, root string, formats strfmt.Registry, opts *SchemaValidatorOptions) *SchemaValidator { | ||||
| 	if schema == nil { | ||||
| 		return nil | ||||
| 	} | ||||
|  | @ -72,17 +81,26 @@ func NewSchemaValidator(schema *spec.Schema, rootSchema interface{}, root string | |||
| 			panic(msg) | ||||
| 		} | ||||
| 	} | ||||
| 	s := SchemaValidator{ | ||||
| 		Path:         root, | ||||
| 		in:           "body", | ||||
| 		Schema:       schema, | ||||
| 		Root:         rootSchema, | ||||
| 		KnownFormats: formats, | ||||
| 		Options:      SchemaValidatorOptions{}} | ||||
| 	for _, o := range options { | ||||
| 		o(&s.Options) | ||||
| 
 | ||||
| 	if opts == nil { | ||||
| 		opts = new(SchemaValidatorOptions) | ||||
| 	} | ||||
| 	s.validators = []valueValidator{ | ||||
| 
 | ||||
| 	var s *SchemaValidator | ||||
| 	if opts.recycleValidators { | ||||
| 		s = pools.poolOfSchemaValidators.BorrowValidator() | ||||
| 	} else { | ||||
| 		s = new(SchemaValidator) | ||||
| 	} | ||||
| 
 | ||||
| 	s.Path = root | ||||
| 	s.in = "body" | ||||
| 	s.Schema = schema | ||||
| 	s.Root = rootSchema | ||||
| 	s.Options = opts | ||||
| 	s.KnownFormats = formats | ||||
| 
 | ||||
| 	s.validators = [8]valueValidator{ | ||||
| 		s.typeValidator(), | ||||
| 		s.schemaPropsValidator(), | ||||
| 		s.stringValidator(), | ||||
|  | @ -92,7 +110,8 @@ func NewSchemaValidator(schema *spec.Schema, rootSchema interface{}, root string | |||
| 		s.commonValidator(), | ||||
| 		s.objectValidator(), | ||||
| 	} | ||||
| 	return &s | ||||
| 
 | ||||
| 	return s | ||||
| } | ||||
| 
 | ||||
| // SetPath sets the path for this schema valdiator | ||||
|  | @ -101,24 +120,46 @@ func (s *SchemaValidator) SetPath(path string) { | |||
| } | ||||
| 
 | ||||
| // Applies returns true when this schema validator applies | ||||
| func (s *SchemaValidator) Applies(source interface{}, kind reflect.Kind) bool { | ||||
| func (s *SchemaValidator) Applies(source interface{}, _ reflect.Kind) bool { | ||||
| 	_, ok := source.(*spec.Schema) | ||||
| 	return ok | ||||
| } | ||||
| 
 | ||||
| // Validate validates the data against the schema | ||||
| func (s *SchemaValidator) Validate(data interface{}) *Result { | ||||
| 	result := &Result{data: data} | ||||
| 	if s == nil { | ||||
| 		return result | ||||
| 		return emptyResult | ||||
| 	} | ||||
| 	if s.Schema != nil { | ||||
| 
 | ||||
| 	if s.Options.recycleValidators { | ||||
| 		defer func() { | ||||
| 			s.redeemChildren() | ||||
| 			s.redeem() // one-time use validator | ||||
| 		}() | ||||
| 	} | ||||
| 
 | ||||
| 	var result *Result | ||||
| 	if s.Options.recycleResult { | ||||
| 		result = pools.poolOfResults.BorrowResult() | ||||
| 		result.data = data | ||||
| 	} else { | ||||
| 		result = &Result{data: data} | ||||
| 	} | ||||
| 
 | ||||
| 	if s.Schema != nil && !s.Options.skipSchemataResult { | ||||
| 		result.addRootObjectSchemata(s.Schema) | ||||
| 	} | ||||
| 
 | ||||
| 	if data == nil { | ||||
| 		// early exit with minimal validation | ||||
| 		result.Merge(s.validators[0].Validate(data)) // type validator | ||||
| 		result.Merge(s.validators[6].Validate(data)) // common validator | ||||
| 
 | ||||
| 		if s.Options.recycleValidators { | ||||
| 			s.validators[0] = nil | ||||
| 			s.validators[6] = nil | ||||
| 		} | ||||
| 
 | ||||
| 		return result | ||||
| 	} | ||||
| 
 | ||||
|  | @ -147,6 +188,7 @@ func (s *SchemaValidator) Validate(data interface{}) *Result { | |||
| 			if erri != nil { | ||||
| 				result.AddErrors(invalidTypeConversionMsg(s.Path, erri)) | ||||
| 				result.Inc() | ||||
| 
 | ||||
| 				return result | ||||
| 			} | ||||
| 			d = in | ||||
|  | @ -155,6 +197,7 @@ func (s *SchemaValidator) Validate(data interface{}) *Result { | |||
| 			if errf != nil { | ||||
| 				result.AddErrors(invalidTypeConversionMsg(s.Path, errf)) | ||||
| 				result.Inc() | ||||
| 
 | ||||
| 				return result | ||||
| 			} | ||||
| 			d = nf | ||||
|  | @ -164,14 +207,26 @@ func (s *SchemaValidator) Validate(data interface{}) *Result { | |||
| 		kind = tpe.Kind() | ||||
| 	} | ||||
| 
 | ||||
| 	for _, v := range s.validators { | ||||
| 	for idx, v := range s.validators { | ||||
| 		if !v.Applies(s.Schema, kind) { | ||||
| 			debugLog("%T does not apply for %v", v, kind) | ||||
| 			if s.Options.recycleValidators { | ||||
| 				// Validate won't be called, so relinquish this validator | ||||
| 				if redeemableChildren, ok := v.(interface{ redeemChildren() }); ok { | ||||
| 					redeemableChildren.redeemChildren() | ||||
| 				} | ||||
| 				if redeemable, ok := v.(interface{ redeem() }); ok { | ||||
| 					redeemable.redeem() | ||||
| 				} | ||||
| 				s.validators[idx] = nil // prevents further (unsafe) usage | ||||
| 			} | ||||
| 
 | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		err := v.Validate(d) | ||||
| 		result.Merge(err) | ||||
| 		result.Merge(v.Validate(d)) | ||||
| 		if s.Options.recycleValidators { | ||||
| 			s.validators[idx] = nil // prevents further (unsafe) usage | ||||
| 		} | ||||
| 		result.Inc() | ||||
| 	} | ||||
| 	result.Inc() | ||||
|  | @ -180,81 +235,120 @@ func (s *SchemaValidator) Validate(data interface{}) *Result { | |||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) typeValidator() valueValidator { | ||||
| 	return &typeValidator{Type: s.Schema.Type, Nullable: s.Schema.Nullable, Format: s.Schema.Format, In: s.in, Path: s.Path} | ||||
| 	return newTypeValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.Type, | ||||
| 		s.Schema.Nullable, | ||||
| 		s.Schema.Format, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) commonValidator() valueValidator { | ||||
| 	return &basicCommonValidator{ | ||||
| 		Path: s.Path, | ||||
| 		In:   s.in, | ||||
| 		Enum: s.Schema.Enum, | ||||
| 	} | ||||
| 	return newBasicCommonValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.Default, | ||||
| 		s.Schema.Enum, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) sliceValidator() valueValidator { | ||||
| 	return &schemaSliceValidator{ | ||||
| 		Path:            s.Path, | ||||
| 		In:              s.in, | ||||
| 		MaxItems:        s.Schema.MaxItems, | ||||
| 		MinItems:        s.Schema.MinItems, | ||||
| 		UniqueItems:     s.Schema.UniqueItems, | ||||
| 		AdditionalItems: s.Schema.AdditionalItems, | ||||
| 		Items:           s.Schema.Items, | ||||
| 		Root:            s.Root, | ||||
| 		KnownFormats:    s.KnownFormats, | ||||
| 		Options:         s.Options, | ||||
| 	} | ||||
| 	return newSliceValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.MaxItems, | ||||
| 		s.Schema.MinItems, | ||||
| 		s.Schema.UniqueItems, | ||||
| 		s.Schema.AdditionalItems, | ||||
| 		s.Schema.Items, | ||||
| 		s.Root, | ||||
| 		s.KnownFormats, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) numberValidator() valueValidator { | ||||
| 	return &numberValidator{ | ||||
| 		Path:             s.Path, | ||||
| 		In:               s.in, | ||||
| 		Default:          s.Schema.Default, | ||||
| 		MultipleOf:       s.Schema.MultipleOf, | ||||
| 		Maximum:          s.Schema.Maximum, | ||||
| 		ExclusiveMaximum: s.Schema.ExclusiveMaximum, | ||||
| 		Minimum:          s.Schema.Minimum, | ||||
| 		ExclusiveMinimum: s.Schema.ExclusiveMinimum, | ||||
| 	} | ||||
| 	return newNumberValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.Default, | ||||
| 		s.Schema.MultipleOf, | ||||
| 		s.Schema.Maximum, | ||||
| 		s.Schema.ExclusiveMaximum, | ||||
| 		s.Schema.Minimum, | ||||
| 		s.Schema.ExclusiveMinimum, | ||||
| 		"", | ||||
| 		"", | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) stringValidator() valueValidator { | ||||
| 	return &stringValidator{ | ||||
| 		Path:      s.Path, | ||||
| 		In:        s.in, | ||||
| 		MaxLength: s.Schema.MaxLength, | ||||
| 		MinLength: s.Schema.MinLength, | ||||
| 		Pattern:   s.Schema.Pattern, | ||||
| 	} | ||||
| 	return newStringValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		nil, | ||||
| 		false, | ||||
| 		false, | ||||
| 		s.Schema.MaxLength, | ||||
| 		s.Schema.MinLength, | ||||
| 		s.Schema.Pattern, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) formatValidator() valueValidator { | ||||
| 	return &formatValidator{ | ||||
| 		Path:         s.Path, | ||||
| 		In:           s.in, | ||||
| 		Format:       s.Schema.Format, | ||||
| 		KnownFormats: s.KnownFormats, | ||||
| 	} | ||||
| 	return newFormatValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.Format, | ||||
| 		s.KnownFormats, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) schemaPropsValidator() valueValidator { | ||||
| 	sch := s.Schema | ||||
| 	return newSchemaPropsValidator(s.Path, s.in, sch.AllOf, sch.OneOf, sch.AnyOf, sch.Not, sch.Dependencies, s.Root, s.KnownFormats, s.Options.Options()...) | ||||
| 	return newSchemaPropsValidator( | ||||
| 		s.Path, s.in, sch.AllOf, sch.OneOf, sch.AnyOf, sch.Not, sch.Dependencies, s.Root, s.KnownFormats, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) objectValidator() valueValidator { | ||||
| 	return &objectValidator{ | ||||
| 		Path:                 s.Path, | ||||
| 		In:                   s.in, | ||||
| 		MaxProperties:        s.Schema.MaxProperties, | ||||
| 		MinProperties:        s.Schema.MinProperties, | ||||
| 		Required:             s.Schema.Required, | ||||
| 		Properties:           s.Schema.Properties, | ||||
| 		AdditionalProperties: s.Schema.AdditionalProperties, | ||||
| 		PatternProperties:    s.Schema.PatternProperties, | ||||
| 		Root:                 s.Root, | ||||
| 		KnownFormats:         s.KnownFormats, | ||||
| 		Options:              s.Options, | ||||
| 	return newObjectValidator( | ||||
| 		s.Path, | ||||
| 		s.in, | ||||
| 		s.Schema.MaxProperties, | ||||
| 		s.Schema.MinProperties, | ||||
| 		s.Schema.Required, | ||||
| 		s.Schema.Properties, | ||||
| 		s.Schema.AdditionalProperties, | ||||
| 		s.Schema.PatternProperties, | ||||
| 		s.Root, | ||||
| 		s.KnownFormats, | ||||
| 		s.Options, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) redeem() { | ||||
| 	pools.poolOfSchemaValidators.RedeemValidator(s) | ||||
| } | ||||
| 
 | ||||
| func (s *SchemaValidator) redeemChildren() { | ||||
| 	for i, validator := range s.validators { | ||||
| 		if validator == nil { | ||||
| 			continue | ||||
| 		} | ||||
| 		if redeemableChildren, ok := validator.(interface{ redeemChildren() }); ok { | ||||
| 			redeemableChildren.redeemChildren() | ||||
| 		} | ||||
| 		if redeemable, ok := validator.(interface{ redeem() }); ok { | ||||
| 			redeemable.redeem() | ||||
| 		} | ||||
| 		s.validators[i] = nil // free up allocated children if not in pool | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue