summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl')
-rw-r--r--vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl1200
1 files changed, 0 insertions, 1200 deletions
diff --git a/vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl b/vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl
deleted file mode 100644
index cee8a5dd6..000000000
--- a/vendor/github.com/go-swagger/go-swagger/generator/templates/schemavalidator.gotmpl
+++ /dev/null
@@ -1,1200 +0,0 @@
-{{ define "primitivefieldcontextvalidator" }}
- {{ if .ReadOnly }}
- if err := validate.ReadOnly(ctx, {{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil{
- return err
- }
- {{ end }}
-{{ end }}
-{{ define "primitivefieldvalidator" }}
- {{ if .Required }}
- {{- if and (eq .GoType "string") (not .IsNullable) }}
- if err := validate.RequiredString({{ path . }}, {{ printf "%q" .Location }}, {{ if .IsAliased }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if .IsAliased }}){{ end }}); err != nil {
- {{- else }}
- if err := validate.Required({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- {{- end }}
- return err
- }
- {{- end }}
- {{ if .MinLength }}
- if err := validate.MinLength({{ path . }}, {{ printf "%q" .Location }}, {{ .ToString }}, {{.MinLength }}); err != nil {
- return err
- }
- {{- end }}
- {{ if .MaxLength }}
- if err := validate.MaxLength({{ path . }}, {{ printf "%q" .Location }}, {{ .ToString }}, {{.MaxLength }}); err != nil {
- return err
- }
- {{ end }}
- {{ if .Pattern }}
- if err := validate.Pattern({{ path . }}, {{ printf "%q" .Location }}, {{ .ToString }}, `{{ escapeBackticks .Pattern }}`); err != nil {
- return err
- }
- {{- end }}
- {{ if .Minimum }}
- {{ template "validationMinimum" . }}
- {{ end }}
- {{ if .Maximum }}
- {{ template "validationMaximum" . }}
- {{ end }}
- {{ if .MultipleOf }}
- {{ template "validationMultipleOf" . }}
- {{ end }}
- {{ if .Enum }}
- // value enum
- if err := {{.ReceiverName }}.validate{{ pascalize .Name }}{{ .Suffix }}Enum({{ path . }}, {{ printf "%q" .Location }}, {{ if .IsNullable }}*{{ end }}{{.ValueExpression }}); err != nil {
- return err
- }
- {{- end }}
- {{ if and .IsCustomFormatter (not .IsStream) (not .IsBase64) }}
- {{ template "validationCustomformat" . }}
- {{- end }}
-{{ end }}
-
-{{ define "slicecontextvalidator" }}
- {{ if .ReadOnly }}
- if err := validate.ReadOnly(ctx, {{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil{
- return err
- }
- {{ end }}
- {{ if .Items }}
- {{- if and (or .Items.ReadOnly .Items.HasContextValidations) (not .Items.IsInterface) (not .Items.IsStream) }}
- for {{.IndexVar }} := 0; {{.IndexVar }} < len({{.ValueExpression }}); {{.IndexVar }}++ {
- {{- with .Items }}
- {{ template "propertycontextvalidator" . }}
- {{- end }}
- }
- {{- end }}
- {{- else }}
- {{- if or .IsAliased (ne .ValueExpression .ReceiverName) }}{{/* prevents generated code to call itself: this is reserved for aliased types */}}
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- if err := {{.ValueExpression }}.ContextValidate(ctx, formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- {{- end }}
- {{- end }}
-{{ end }}
-
-{{define "slicevalidator" }}
- {{ if .Required }}
- if err := validate.Required({{ path . }}, {{ printf "%q" .Location }}, {{ .ValueExpression }}); err != nil {
- return err
- }
- {{ end }}
- {{ if or .MinItems .MaxItems }}
- {{ .IndexVar }}{{ pascalize .Name }}Size := int64(len({{.ValueExpression }}))
- {{ end }}
- {{ if .MinItems }}
- if err := validate.MinItems({{ path . }}, {{ printf "%q" .Location }}, {{ .IndexVar }}{{ pascalize .Name }}Size, {{.MinItems }}); err != nil {
- return err
- }
- {{ end }}
- {{ if .MaxItems }}
- if err := validate.MaxItems({{ path . }}, {{ printf "%q" .Location }}, {{ .IndexVar }}{{ pascalize .Name }}Size, {{.MaxItems }}); err != nil {
- return err
- }
- {{ end }}
- {{ if .UniqueItems }}
- if err := validate.UniqueItems({{ path . }}, {{ printf "%q" .Location }}, {{.ValueExpression }}); err != nil {
- return err
- }
- {{ end }}
- {{ if .Enum }}
- // for slice
- if err := {{.ReceiverName }}.validate{{ pascalize .Name }}Enum({{ path . }}, {{ printf "%q" .Location }}, {{.ValueExpression }}); err != nil {
- return err
- }
- {{ end }}
- {{ if .Items }}
- {{- if and (or .Items.Required .Items.HasValidations .Items.IsBaseType .Items.IsAliased) (not .Items.IsInterface) (not .Items.IsStream) (not .Items.SkipExternalValidation) }}
- for {{.IndexVar }} := 0; {{.IndexVar }} < len({{.ValueExpression }}); {{.IndexVar }}++ {
- {{- with .Items }}
- {{- if and .IsNullable (not .Required) (not .IsMapNullOverride) }}
- {{- if .IsInterface }}
- if {{ .ValueExpression }} == nil { // not required
- {{- else }}
- if swag.IsZero({{ .ValueExpression }}) { // not required
- {{- end }}
- continue
- }
- {{- end }}
- {{ template "propertyvalidator" . }}
- {{- end }}
- }
- {{- end }}
- {{- else }}
- {{- if and (or .IsAliased (ne .ValueExpression .ReceiverName) (not .SkipExternalValidation)) }}{{/* prevents generated code to call itself: this is reserved for aliased types */}}
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- if err := {{.ValueExpression }}.Validate(formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- {{- end }}
- {{- end }}
-{{ end }}
-{{ define "mapcontextvalidator" }}
- {{- if and .Required }}
- {{- if or .IsNullable .IsInterface }}
- if {{ .ReceiverName }}.{{ pascalize .Name }} == nil {
- return errors.Required({{ path . }}, {{ printf "%q" .Location }}, nil)
- }
- {{- else }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{ .ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- end }}
- {{ if .HasAdditionalProperties }}
- {{- if .AdditionalProperties.HasContextValidations }}
- {{- $validatedValues := .ValueExpression }}{{ $keyVar := .AdditionalProperties.KeyVar }}
- for {{ .AdditionalProperties.KeyVar }} := range {{ .ValueExpression }} {
- {{ with .AdditionalProperties }}
- {{/*Don't need to add context validate directly here since we are recursing*/}}
- {{- if .IsPrimitive }}
- {{- if .IsAliased }}
- {{- if not .IsAnonymous }}
- if val, ok := {{ $validatedValues }}[{{ $keyVar }}]; ok {
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if val != nil {
- {{- end }}
- if err := val.ContextValidate(ctx, formats); err != nil {
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- }
- {{- else }}{{/* validation of anonymous objects */}}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{ end }}
- {{- end }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{ end }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- // TODO: context validating additional items should go here, if you see this raise an issue{{/* TODO(fred): investigate the case to remove that comment: AdditionalItems shouldn't come in maps. Upstream validation is needed to guard against this */}}
- // at https://github.com/go-swagger/go-swagger/issues
- {{ end }}
- {{ else }}
- {{ template "primitivefieldcontextvalidator" . }}
- {{ end }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- {{- if and (not .IsStream) (not .IsBase64) }}{{/* TODO: IsStream and CustomFormattershould be mutually exclusive in type resolver */}}
- // TODO: context validating custom formatter items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{/*
- {{ template "validationCustomformat" . }}
- */}}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicecontextvalidator" . }}
- {{- else if and .IsMap (not .IsInterface) }}
- {{ template "mapcontextvalidator" . }}
- {{- else if and .IsMap .IsInterface }}
- {{ if .Enum }}
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}ValueEnum({{ path . }}, {{ printf "%q" .Location }}, {{ $validatedValues }}[{{ $keyVar }}]); err != nil {
- return err
- }
- {{- end }}
- {{- else if or .IsComplexObject .IsTuple .IsAdditionalProperties .IsAliased }}
- {{- if not .IsAnonymous }}
- if val, ok := {{ $validatedValues }}[{{ $keyVar }}]; ok {
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if val != nil {
- {{- end }}
- if err := val.ContextValidate(ctx, formats); err != nil {
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- }
- {{- else }}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{ end }}
- {{- end }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{- end }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- // TODO: context validating additional items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{ end }}
- {{- end }}
- }
- {{ end }}
- {{ end }}
- {{- else if .IsAliased }}
- {{- if and .IsMap .HasValidations }}{{/* validation of aliased maps but does not know about AdditionalProperties: e.g. it comes from a $ref */}}
- {{- if not .IsAnonymous }}
- {{- if $.IsMap }}{{/* we come from a map range */}}
- if val, ok := {{ .ValueExpression }}; ok {
- {{- end }}
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- {{- if $.IsMap }}
- if val != nil {
- {{- else }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- {{- end }}
- if err := {{ if $.IsMap }}val{{ else }}{{ .ValueExpression }}{{ end }}.ContextValidate(ctx, formats); err != nil {
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- {{- if or $.IsMap }}
- }
- {{- end }}
- {{- end }}
- {{- end }}
- {{- end }}
-{{ end }} {{/*mapcontextvalidator*/}}
-{{ define "mapvalidator" }}{{/* validates additionalProperties */}}
- {{- if and .Required }}
- {{- if or .IsNullable .IsInterface }}
- if {{ .ReceiverName }}.{{ pascalize .Name }} == nil {
- return errors.Required({{ path . }}, {{ printf "%q" .Location }}, nil)
- }
- {{- else }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{ .ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- end }}
- {{ if .HasAdditionalProperties }}
- {{- if and .AdditionalProperties.HasValidations (not .AdditionalProperties.SkipExternalValidation) }}
- {{- $validatedValues := .ValueExpression }}{{ $keyVar := .AdditionalProperties.KeyVar }}
- for {{ .AdditionalProperties.KeyVar }} := range {{ .ValueExpression }} {
- {{ with .AdditionalProperties }}
- {{- if and (not .Required) .IsNullable }}{{/* skip when nul type is accepted */}}
- {{- if .IsInterface }}
- if {{ $validatedValues }}[{{ $keyVar }}] == nil { // not required
- {{- else }}
- if swag.IsZero({{ .ValueExpression }}) { // not required
- {{- end }}
- continue
- }
- {{- else if and (.Required) (not .IsArray) }}{{/* Required slice is processed below */}}
- if err := validate.Required({{ path . }}, {{ printf "%q" .Location }}, {{ $validatedValues }}[{{ $keyVar }}]); err != nil {
- return err
- }
- {{- end }}
- {{- if and .IsPrimitive (not .SkipExternalValidation ) }}
- {{- if .IsAliased }}
- {{- if not .IsAnonymous }}
- if val, ok := {{ $validatedValues }}[{{ $keyVar }}]; ok {
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if val != nil {
- {{- end }}
- if err := val.Validate(formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- }
- {{- else }}{{/* validation of anonymous objects */}}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{ end }}
- {{- end }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{ end }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- // TODO: validating additional items should go here, if you see this raise an issue{{/* TODO(fred): investigate the case to remove that comment: AdditionalItems shouldn't come in maps. Upstream validation is needed to guard against this */}}
- // at https://github.com/go-swagger/go-swagger/issues
- {{ end }}
- {{- else }}
- {{ template "primitivefieldvalidator" . }}
- {{- end }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- {{- if .Required }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- if and (not .IsStream) (not .IsBase64) (not .SkipExternalValidation) }}{{/* TODO: IsStream and CustomFormattershould be mutually exclusive in type resolver */}}
- {{ template "validationCustomformat" . }}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicevalidator" . }}
- {{- else if and .IsMap (not .IsInterface) }}
- {{ template "minmaxProperties" .}}
- {{ template "mapvalidator" . }}
- {{ if .Enum }}
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}ValueEnum({{ path . }}, {{ printf "%q" .Location }}, {{ $validatedValues }}[{{ $keyVar }}]); err != nil {
- return err
- }
- {{- end }}
- {{- else if and .IsMap .IsInterface }}
- {{ if .Enum }}
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}ValueEnum({{ path . }}, {{ printf "%q" .Location }}, {{ $validatedValues }}[{{ $keyVar }}]); err != nil {
- return err
- }
- {{- end }}
- {{- else if or .IsComplexObject .IsTuple .IsAdditionalProperties .IsAliased }}
- {{- if and (not .IsAnonymous) (not .SkipExternalValidation) }}
- if val, ok := {{ $validatedValues }}[{{ $keyVar }}]; ok {
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if val != nil {
- {{- end }}
- if err := val.Validate(formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- }
- {{- else }}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{ end }}
- {{- end }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{- end }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- // TODO: validating additional items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{ end }}
- {{ end }}
- }
- {{- end }}
- {{ end }}
- {{ if .Enum }}
- // from map
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Enum({{ path . }}, {{ printf "%q" .Location }}, {{ .ValueExpression }}); err != nil {
- return err
- }
- {{ end }}
- {{- else if .IsAliased }}
- {{- if and .IsMap .HasValidations (not .SkipExternalValidation) }}{{/* validation of aliased maps but does not know about AdditionalProperties: e.g. it comes from a $ref */}}
- {{- if not .IsAnonymous }}
- {{- if $.IsMap }}{{/* we come from a map range */}}
- if val, ok := {{ .ValueExpression }}; ok {
- {{- end }}
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- {{- if $.IsMap }}
- if val != nil {
- {{- else }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- {{- end }}
- if err := {{ if $.IsMap }}val{{ else }}{{ .ValueExpression }}{{ end }}.Validate(formats); err != nil {
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- {{- if or $.IsMap }}
- }
- {{- end }}
- {{- end }}
- {{- end }}
- {{- else if .Enum }}
- // from map without additionalProperties
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Enum({{ if .Path }}{{ .Path }}{{ else }}""{{ end }}, {{ printf "%q" .Location }}, {{ .ValueExpression }}); err != nil {
- return err
- }
- {{- end }}
-{{ end }}
-
-{{define "objectcontextvalidator" }}
- {{/* Debug
- // .Name: {{ .Name }}
- // .IsAliased: {{ .IsAliased }}
- // .IsAnonymous: {{ .IsAnonymous }}
- // .IsNullable: {{ .IsNullable }}
- // .Required: {{ .Required }}
- // .ReadOnly: {{ .ReadOnly }}
- // .HasContextValidations {{ .HasContextValidations }}
- // .IsBaseType: {{ .IsBaseType }}
- // .ValueExpression: {{ .ValueExpression }}
- // .ReceiverName: {{ .ReceiverName }}
- */}}
- {{- if not .IsAnonymous }}
- {{- if or .IsAliased (ne .ValueExpression .ReceiverName) }}{{/* prevents generated code to call itself: case of aliased types */}}
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- {{ if not .Required }}
- {{- if .IsInterface }}
- if {{ .ValueExpression }} == nil { // not required
- {{- else }}
- if swag.IsZero({{ .ValueExpression }}) { // not required
- {{- end }}
- return nil
- }
- {{ end }}
- if err := {{.ValueExpression }}.ContextValidate(ctx, formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if and .IsNullable (not .IsMapNullOverride) }}
- }
- {{- end }}
- {{- end }}
- {{- else }}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{ end }}
- {{ end }}
- {{ range .Properties }}
- {{ template "propertycontextvalidator" . }}
- {{ end }}
- {{- end }}
- {{- if and .IsTuple .AdditionalItems }}
- // TODO: context validating additional items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{- end }}
-{{ end }}
-{{ define "minmaxProperties" }}
- {{- if and (or .IsMap (and .IsAdditionalProperties .HasAdditionalProperties)) (or .MinProperties .MaxProperties) }}
- {{- if and (not .IsAdditionalProperties) (not .IsInterface) (eq (len .Properties) 0) }}{{/* map only */}}
- nprops := len({{ if and .IsMap (not .IsAliased) .HasAdditionalProperties (not .IsElem) (not .IsProperty) }}{{ .ReceiverName }}{{ else }}{{ .ValueExpression }}{{ end }})
- {{- else }}{{/* object with properties */}}
- {{- if and .IsNullable .MinProperties }}
- {{- if gt0 .MinProperties }}
-
- // short circuits minProperties > 0
- if {{ .ReceiverName }} == nil {
- return errors.TooFewProperties({{ path . }}, {{ printf "%q" .Location }}, {{ .MinProperties }})
- }
- {{- end }}
- {{- end }}
-
- props := make(map[string]json.RawMessage, {{ len .Properties }}{{ if .HasAdditionalProperties }}+ 10{{ end }})
- j, err := swag.WriteJSON({{ .ReceiverName }})
- if err != nil {
- return err
- }
-
- if err = swag.ReadJSON(j, &props) ; err != nil {
- return err
- }
-
- nprops := len(props)
- {{- end }}
- {{ if .MinProperties }}
- // minProperties: {{ .MinProperties }}
- if nprops < {{ .MinProperties }} {
- return errors.TooFewProperties({{ path . }}, {{ printf "%q" .Location }}, {{ .MinProperties }})
- }
- {{- end }}
- {{ if .MaxProperties }}
- // maxProperties: {{ .MaxProperties }}
- if nprops > {{ .MaxProperties }} {
- return errors.TooManyProperties({{ path . }}, {{ printf "%q" .Location }}, {{ .MaxProperties }})
- }
- {{- end }}
- {{- end }}
-{{- end }}
-{{define "objectvalidator" }}{{/* // DEBUG
- // .Name: {{ .Name }}
- // .IsAliased: {{ .IsAliased }}
- // .IsAnonymous: {{ .IsAnonymous }}
- // .IsNullable: {{ .IsNullable }}
- // .Required: {{ .Required }}
- // .ReadOnly: {{ .ReadOnly }}
- // .HasValidations {{ .HasValidations }}
- // .HasContextValidations {{ .HasContextValidations }}
- // .IsBaseType: {{ .IsBaseType }}
- // .ValueExpression: {{ .ValueExpression }}
- // .ReceiverName: {{ .ReceiverName }}
- // .IsAdditionalProperties: {{ .IsAdditionalProperties }}
- // .IsInterface: {{ .IsInterface }}
- // .IsMap: {{ .IsMap }}
- // .IsArray: {{ .IsArray }}
- // .IsMapNullOverride: {{ .IsMapNullOverride }}
- */}}
- {{- if not .IsAnonymous }}
- {{- if and .Required (or .IsNullable .IsBaseType .IsMap) }}
- if err := validate.Required({{ path . }}, {{ printf "%q" .Location }}, {{.ValueExpression }}); err != nil {
- return err
- }
- {{- if and (not .Required) .IsBaseType }}
- if {{ .ValueExpression }} == nil {
- return nil
- }
- {{- end }}
- {{ end }}
- {{- if and (or .IsAliased (ne .ValueExpression .ReceiverName)) (not .SkipExternalValidation) }}{{/* prevents generated code to call itself: case of aliased types */}}
- {{- if or (and (or .IsNullable) (not .IsMapNullOverride)) .IsMap .IsArray }}
- if {{ .ValueExpression }} != nil {
- {{- end }}
- if err := {{.ValueExpression }}.Validate(formats); err != nil {
- if ve, ok := err.(*errors.Validation); ok {
- return ve.ValidateName({{ path . }})
- } else if ce, ok := err.(*errors.CompositeError); ok {
- return ce.ValidateName({{ path . }})
- }
- return err
- }
- {{- if or (and (or .IsNullable) (not .IsMapNullOverride)) .IsMap .IsArray }}
- }
- {{- end }}
- {{- end }}
- {{- else }}
- {{ template "minmaxProperties" .}}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{ end }}
- {{ end }}
- {{ range .Properties }}
- {{ template "propertyvalidator" . }}
- {{ end }}
- {{- end }}
- {{- if and .IsTuple .AdditionalItems }}
- // TODO: validating additional items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{- end }}
-{{ end }}
-
-{{define "propertycontextvalidator"}}
- {{- if .IsPrimitive }}
- {{- if .IsAliased }}
- {{ template "objectcontextvalidator" . }}
- {{- else }}
- {{ template "primitivefieldcontextvalidator" . }}
- {{- end }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- // TODO: context validating primitive with custom formatter should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{- if .ReadOnly }}
-
- if err := validate.ReadOnly{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- if and (not .IsStream) (not .IsBase64) }}
- // TODO: context validating properties with custom formatter should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{/*{{ template "validationCustomformat" . }}*/}}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicecontextvalidator" . }}
- {{- else if and .IsMap (or (not .IsAliased) (and .IsAliased .IsInterface)) }}{{/* except for interface, the renderinf for aliased maps is performed by objectvalidator */}}
- {{ template "mapcontextvalidator" . }}
- {{- else if or .IsComplexObject .IsTuple .IsAdditionalProperties .IsAliased }}
- {{ template "objectcontextvalidator" . }}
- {{- end }}
-
-{{end}}
-
-{{define "propertyvalidator" }}
- {{- if .IsPrimitive }}
- {{- if .IsAliased }}
- {{- if and .Required (not .IsAnonymous) }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{ template "objectvalidator" . }}
- {{- else }}
- {{ template "primitivefieldvalidator" . }}
- {{- end }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- {{- if .Required }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- if and (not .IsStream) (not .IsBase64) }}
- {{ template "validationCustomformat" . }}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicevalidator" . }}
- {{- else if and .IsMap (or (not .IsAliased) (and .IsAliased .IsInterface)) }}
- {{ template "minmaxProperties" . }}
- {{ template "mapvalidator" . }}
- {{- else if or .IsComplexObject .IsTuple .IsAdditionalProperties .IsAliased }}
- {{- if and .IsAdditionalProperties .Required (not .IsAliased) }}
- {{- if or .IsNullable .IsInterface }}
- if {{ .ValueExpression }} == nil {
- return errors.Required({{ path . }}, {{ printf "%q" .Location }}, {{ .ValueExpression }})
- }
- {{- else }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- end }}
- {{ template "objectvalidator" . }}
- {{- else if and .IsExternal .Required }}
- {{- if or .IsNullable .IsInterface }}
- if {{ .ValueExpression }} == nil {
- return errors.Required({{ path . }}, {{ printf "%q" .Location }}, {{ .ValueExpression }})
- }
- {{- else }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- end }}
-{{ end }}
-
-{{define "fieldcontextvalidator" }}
- {{- if .IsPrimitive }}
- {{ template "primitivefieldcontextvalidator" . }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- {{- if and (not .IsStream) (not .IsBase64) }}
- // TODO: context validating properties with custom formatter should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{/*
- {{ template "validationCustomformat" . }}
- */}}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicecontextvalidator" . }}
- {{- else if .IsMap }}
- {{ template "mapcontextvalidator" . }}
- {{- end }}
-
-{{ end }}
-
-{{ define "fieldvalidator"}}
- {{- if .IsPrimitive }}
- {{ template "primitivefieldvalidator" . }}
- {{- else if and .IsCustomFormatter (or .HasValidations .Required) }}{{/* custom format not captured as primitive */}}
- {{- if .Required }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}({{ path . }}, {{ printf "%q" .Location }}, {{ if not (or .IsAnonymous .IsNullable) }}{{ .GoType }}({{ end }}{{.ValueExpression }}{{ if not (or .IsAnonymous .IsNullable) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- if and (not .IsStream) (not .IsBase64) }}
- {{ template "validationCustomformat" . }}
- {{- end }}
- {{- else if .IsArray }}
- {{ template "slicevalidator" . }}
- {{- else if .IsMap }}
- {{ template "mapvalidator" . }}
- {{- end }}
-{{ end }}
-
-{{define "schemacontextvalidator" }}
-// ContextValidate validate this {{ humanize .Name }} based on the context it is used
-func ({{.ReceiverName }} {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ if .Discriminates }}{{ camelize .Name }}{{ else if .IsExported }}{{ pascalize .Name }}{{ else }}{{ .Name }}{{ end }}) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
- var res []error
- {{ range .AllOf }}
- {{- if not .Properties }}
- // validation for a type composition with {{ .GoType }}
- {{- end }}
- {{- if and (or .IsInterface .IsAnonymous .IsBaseType) (or .HasContextValidations) }}
- {{ template "fieldcontextvalidator" . }}
- {{ range .Properties }}
- {{ if and (ne $.DiscriminatorField .Name) (or .HasContextValidations) }}
- if err := {{.ReceiverName }}.contextValidate{{ pascalize .Name }}(ctx, formats); err != nil {
- res = append(res, err)
- }
- {{- end }}
- {{- end }}
- {{- if and .HasAdditionalProperties (not .IsMap) }}{{/* validates additionalProperties in an object which is not itself a map */}}
- {{ template "mapcontextvalidator" . }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- // TODO: context validating additional items should go here, if you see this raise an issue
- // at https://github.com/go-swagger/go-swagger/issues
- {{/*
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Items(formats); err != nil {
- res = append(res, err)
- }
- */}}
- {{ end }}
- {{- else if (or .HasContextValidations) }}
- if err := {{ .ReceiverName }}.{{ pascalize (dropPackage .GoType) }}.ContextValidate(ctx, formats); err != nil {
- res = append(res, err)
- }
- {{- end }}
- {{- end }} {{/*end AllOf*/}}
- {{ template "fieldcontextvalidator" . }}
- {{ range .Properties }}
- {{ if .HasContextValidations }} {{/* complex obj always has cv*/}}
- if err := {{.ReceiverName }}.contextValidate{{ pascalize .Name }}(ctx, formats); err != nil {
- res = append(res, err)
- }
- {{ end }}
- {{ end }}
- {{- if and .HasAdditionalProperties (not .IsMap) }}{{/* validates additionalProperties in an object which is not itself a map */}}
- {{ template "mapcontextvalidator" . }}
- {{- end }}
- if len(res) > 0 {
- return errors.CompositeValidationError(res...)
- }
- return nil
-}
-
-
- {{ range .Properties }}
- {{ if .HasContextValidations }}
-func ({{.ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) contextValidate{{ pascalize .Name }}(ctx context.Context, formats strfmt.Registry) error {
- {{template "propertycontextvalidator" . }}
- return nil
-}
- {{ end }}
- {{ end }} {{/*Properties*/}}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ if .HasContextValidations }}
-func ({{.ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) contextValidate{{ pascalize .Name }}(ctx context.Context, formats strfmt.Registry) error {
- {{template "propertycontextvalidator" . }}
- return nil
-}
- {{ end }}
- {{ end }}
- {{ end }} {{/*AllOf*/}}
-{{end}} {{/*schemacontextvalidator*/}}
-
-{{define "schemavalidator" }}
- {{ if .Enum }}
- {{ if (eq .SwaggerType "string") }}
- {{ $gotype := .GoType }}
-const (
- {{ range .Enum }}
- {{- $variant := print $gotype (pascalize (cleanupEnumVariant .)) }}
- // {{ $variant }} captures enum value {{ printf "%q" . }}
- {{ $variant }} {{ $gotype }} = {{ printf "%q" . }}
- {{ end }}
-)
- {{ end }}
-
-// for schema
-var {{ camelize .Name }}Enum []interface{}
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize .Name }}Enum = append({{ camelize .Name }}Enum, v)
- }
-}
-
-func ({{ .ReceiverName }} {{ if not .IsPrimitive }}*{{ end }}{{ if .IsExported }}{{ pascalize .Name }}{{ else }}{{ .Name }}{{ end }}) validate{{ pascalize .Name }}Enum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize .Name }}Enum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ if .ItemsEnum }}
-var {{ camelize .Name }}ItemsEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" .Items }}
- if err := json.Unmarshal([]byte(`{{ json .ItemsEnum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize .Name }}ItemsEnum = append({{ camelize .Name }}ItemsEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ItemsEnum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .Items }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize .Name }}ItemsEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ with .AdditionalProperties }}
- {{ if .Enum }}
-// for additional props
-var {{ camelize .Name }}ValueEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize .Name }}ValueEnum = append({{ camelize .Name }}ValueEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if .IsExported }}{{ pascalize .Name }}{{ else }}{{ .Name }}{{ end }}) validate{{ pascalize .Name }}ValueEnum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize .Name }}ValueEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{- end }}
- {{ end }}
-// Validate validates this {{ humanize .Name }}
-func ({{.ReceiverName }} {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ if .Discriminates }}{{ camelize .Name }}{{ else if .IsExported }}{{ pascalize .Name }}{{ else }}{{ .Name }}{{ end }}) Validate(formats strfmt.Registry) error {
- var res []error
- {{ template "minmaxProperties" .}}
- {{ range .AllOf }}
- {{- if not .Properties }}
- // validation for a type composition with {{ .GoType }}
- {{- end }}
- {{- if and (or .IsInterface .IsAnonymous .IsBaseType) (or .Required .HasValidations) }}
- {{ template "fieldvalidator" . }}
-
- {{ range .Properties }}
- {{ if and (ne $.DiscriminatorField .Name) (or .Required .HasValidations) }}
- if err := {{.ReceiverName }}.validate{{ pascalize .Name }}(formats); err != nil {
- res = append(res, err)
- }
- {{- end }}
- {{- end }}
- {{- if and .HasAdditionalProperties (not .IsMap) }}{{/* validates additionalProperties in an object which is not itself a map */}}
- {{ template "mapvalidator" . }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Items(formats); err != nil {
- res = append(res, err)
- }
- {{ end }}
- {{- else if (or .Required .HasValidations) }}
- if err := {{ .ReceiverName }}.{{ pascalize (dropPackage .GoType) }}.Validate(formats); err != nil {
- res = append(res, err)
- }
- {{- end }}
- {{- end }}
- {{ template "fieldvalidator" . }}
- {{ range .Properties }}
- {{ if and (ne $.DiscriminatorField .Name) (or .Required .HasValidations) }}
- if err := {{.ReceiverName }}.validate{{ pascalize .Name }}(formats); err != nil {
- res = append(res, err)
- }
- {{ end }}
- {{ end }}
- {{- if and .HasAdditionalProperties (not .IsMap) }}{{/* validates additionalProperties in an object which is not itself a map */}}
- {{ template "mapvalidator" . }}
- {{- end }}
- {{ if and .IsTuple .AdditionalItems }}{{/* validates additionalItems in a tuple */}}
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Items(formats); err != nil {
- res = append(res, err)
- }
- {{ end }}
- {{ if and .Enum (not .IsPrimitive) (not .IsMap) }}
- // value enum
- if err := {{ .ReceiverName }}.validate{{ pascalize .Name }}Enum("", "body", {{ .ReceiverName }}); err != nil {
- res = append(res, err)
- }
- {{ end }}
-
- if len(res) > 0 {
- return errors.CompositeValidationError(res...)
- }
- return nil
-}
-
- {{ range .Properties }}
- {{ if or .Required .HasValidations }}
- {{ if .Enum }}
-var {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum = append({{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, v)
- }
-}
-
- {{ if (eq .SwaggerType "string") }}
- {{ $gotype := .GoType }}
- {{ $propname := .Name }}
-const (
- {{ range .Enum }}
- {{- $variant := print (pascalize $.Name) (pascalize $propname) (pascalize (cleanupEnumVariant .)) }}
- // {{ $variant }} captures enum value {{ printf "%q" . }}
- {{ $variant }} {{ $gotype }} = {{ printf "%q" . }}
- {{ end }}
-)
- {{ end }}
-
-// prop value enum
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}Enum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ if .ItemsEnum }}
-var {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum []interface{}
-func init() {
- var res []{{ template "dereffedSchemaType" .Items }}
- if err := json.Unmarshal([]byte(`{{ json .ItemsEnum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum = append({{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ItemsEnum(path, location string, value {{ if or .Items.IsTuple .Items.IsComplexObject .Items.IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .Items }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ if .AdditionalItems }}
- {{ if .AdditionalItems.Enum }}
-var {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" .AdditionalItems }}
- if err := json.Unmarshal([]byte(`{{ json .AdditionalItems.Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum = append({{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}Enum(path, location string, value {{ if or .AdditionalItems.IsTuple .AdditionalItems.IsComplexObject .AdditionalItems.IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .AdditionalItems }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ end }}
- {{ with .AdditionalProperties }}
- {{ if .Enum }}
-// additional properties value enum
-var {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum = append({{ camelize $.Name }}{{ pascalize .Name }}ValueEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ValueEnum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ end }}
-
- {{ if and (ne $.DiscriminatorField .Name) (or .Required .HasValidations) }}
-func ({{.ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}(formats strfmt.Registry) error {
- {{- if not .Required }}
- {{- if .IsInterface }}
- if .ValueExpression == nil { // not required
- {{- else }}
- if swag.IsZero({{ .ValueExpression }}) { // not required
- {{- end }}
- return nil
- }
- {{- end }}
- {{- if and $.IsTuple .IsMap .Required }}
- {{- if .IsInterface }}
- if {{ .ValueExpression }} == nil {
- return errors.Required({{ path . }}, {{ printf "%q" .Location }}, {{ .ValueExpression }})
- }
- {{- else }}
- if err := validate.Required{{ if and (eq .GoType "string") (not .IsNullable) }}String{{ end }}(
- {{ path . }}, {{ printf "%q" .Location }},
- {{- if and (eq .GoType "string") (not (or .IsAnonymous .IsNullable)) }}{{ .GoType }}({{ end }}
- {{- .ValueExpression }}
- {{- if and (eq .GoType "string") (not (or .IsAnonymous .IsNullable)) }}){{ end }}); err != nil {
- return err
- }
- {{- end }}
- {{- end }}
- {{template "propertyvalidator" . }}
-
- return nil
-}
- {{ end }}
- {{ end }}
- {{ end }}
- {{ range .AllOf }}
- {{ range .Properties }}
- {{ if and (ne $.DiscriminatorField .Name) (or .Required .HasValidations) }}
- {{ if .Enum }}
-var {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum = append({{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, v)
- }
-}
-
-// property enum
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}Enum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ if .ItemsEnum }}
-var {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" .Items }}
- if err := json.Unmarshal([]byte(`{{ json .ItemsEnum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum = append({{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ItemsEnum(path, location string, value {{ if or .Items.IsTuple .Items.IsComplexObject .Items.IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .Items }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}{{ pascalize .Name }}ItemsEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ if .AdditionalItems }}
- {{ if .AdditionalItems.Enum }}
-var {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" .AdditionalItems }}
- if err := json.Unmarshal([]byte(`{{ json .AdditionalItems.Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum = append({{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}Enum(path, location string, value {{ if or .AdditionalItems.IsTuple .AdditionalItems.IsComplexObject .AdditionalItems.IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .AdditionalItems }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}Type{{ pascalize .Name }}PropEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ end }}
- {{ with .AdditionalProperties }}
- {{ if .Enum }}
-var {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum []interface{}
-func init() {
- var res []{{ template "dereffedSchemaType" . }}
- if err := json.Unmarshal([]byte(`{{ json .Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum = append({{ camelize $.Name }}{{ pascalize .Name }}ValueEnum, v)
- }
-}
-
-// additional properties value enum
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ValueEnum(path, location string, value {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" . }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize $.Name }}{{ pascalize .Name }}ValueEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
- {{ end }}
-
-
-func ({{.ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}(formats strfmt.Registry) error {
- {{ if not .Required }}
- {{- if .IsInterface }}
- if {{ .ValueExpression }} == nil { // not required
- {{- else }}
- if swag.IsZero({{ .ValueExpression }}) { // not required
- {{- end }}
- return nil
- }
- {{ end }}
- {{template "propertyvalidator" . }}
-
- return nil
-}
- {{ end }}
- {{ end }}
- {{ end }}
-
- {{ if .HasAdditionalItems }}
- {{ if .AdditionalItems.Enum }}
-var {{ camelize .Name }}ItemsEnum []interface{}
-
-func init() {
- var res []{{ template "dereffedSchemaType" .AdditionalItems }}
- if err := json.Unmarshal([]byte(`{{ json .AdditionalItems.Enum }}`), &res); err != nil {
- panic(err)
- }
- for _, v := range res {
- {{ camelize .Name }}ItemsEnum = append({{ camelize .Name }}ItemsEnum, v)
- }
-}
-
-func ({{ .ReceiverName }} *{{ if $.Discriminates }}{{ camelize $.Name }}{{ else if $.IsExported }}{{ pascalize $.Name }}{{ else }}{{ $.Name }}{{ end }}) validate{{ pascalize .Name }}ItemsEnum(path, location string, value {{ if or .AdditionalItems.IsTuple .AdditionalItems.IsComplexObject .AdditionalItems.IsAdditionalProperties }}*{{ end }}{{ template "dereffedSchemaType" .AdditionalItems }}) error {
- if err := validate.EnumCase(path, location, value, {{ camelize .Name }}ItemsEnum, {{ if .IsEnumCI }}false{{ else }}true{{ end }}); err != nil {
- return err
- }
- return nil
-}
- {{ end }}
-func ({{.ReceiverName }} *{{ pascalize .Name }}) validate{{ pascalize .Name }}Items(formats strfmt.Registry) error {
- {{ if and (or .AdditionalItems.Required .AdditionalItems.HasValidations) (not .AdditionalItems.SkipExternalValidation) }}
- for {{ .IndexVar }} := range {{ .ValueExpression }}.{{ pascalize .Name }}Items {
- {{template "propertyvalidator" .AdditionalItems }}
- }
- {{ end }}
- return nil
-}
- {{ end }}
-{{ end }}