From 0627fce79809698a1b2099cfc576cbd57acb7cb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 18:05:54 +0000 Subject: [PATCH] Update module github.com/gorilla/schema to v1.4.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 +-- vendor/github.com/gorilla/schema/decoder.go | 30 ++++++++++++++------- vendor/modules.txt | 2 +- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index b8dcfaafdf1b..cc2b051334e3 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/google/uuid v1.6.0 github.com/gorilla/handlers v1.5.2 github.com/gorilla/mux v1.8.1 - github.com/gorilla/schema v1.3.0 + github.com/gorilla/schema v1.4.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hugelgupf/p9 v0.3.1-0.20230822151754-54f5c5530921 github.com/json-iterator/go v1.1.12 diff --git a/go.sum b/go.sum index aa8855e81eed..1bedea9472b1 100644 --- a/go.sum +++ b/go.sum @@ -277,8 +277,8 @@ github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyE github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/schema v1.3.0 h1:rbciOzXAx3IB8stEFnfTwO3sYa6EWlQk79XdyustPDA= -github.com/gorilla/schema v1.3.0/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= +github.com/gorilla/schema v1.4.0 h1:l2N+lRTJtev9SUhBtj6NmSxd/6+8LhvN0kV+H2Y8R9k= +github.com/gorilla/schema v1.4.0/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= diff --git a/vendor/github.com/gorilla/schema/decoder.go b/vendor/github.com/gorilla/schema/decoder.go index 98f072e414a9..ed856419e277 100644 --- a/vendor/github.com/gorilla/schema/decoder.go +++ b/vendor/github.com/gorilla/schema/decoder.go @@ -92,9 +92,9 @@ func (d *Decoder) Decode(dst interface{}, src map[string][]string) error { return nil } -//setDefaults sets the default values when the `default` tag is specified, -//default is supported on basic/primitive types and their pointers, -//nested structs can also have default tags +// setDefaults sets the default values when the `default` tag is specified, +// default is supported on basic/primitive types and their pointers, +// nested structs can also have default tags func (d *Decoder) setDefaults(t reflect.Type, v reflect.Value) MultiError { struc := d.cache.get(t) if struc == nil { @@ -104,6 +104,15 @@ func (d *Decoder) setDefaults(t reflect.Type, v reflect.Value) MultiError { errs := MultiError{} + if v.Type().Kind() == reflect.Struct { + for i := 0; i < v.NumField(); i++ { + field := v.Field(i) + if field.Type().Kind() == reflect.Ptr && field.IsNil() && v.Type().Field(i).Anonymous { + field.Set(reflect.New(field.Type().Elem())) + } + } + } + for _, f := range struc.fields { vCurrent := v.FieldByName(f.name) @@ -121,7 +130,7 @@ func (d *Decoder) setDefaults(t reflect.Type, v reflect.Value) MultiError { } else if f.typ.Kind() == reflect.Slice { vals := strings.Split(f.defaultValue, "|") - //check if slice has one of the supported types for defaults + // check if slice has one of the supported types for defaults if _, ok := builtinConverters[f.typ.Elem().Kind()]; !ok { errs.merge(MultiError{"default-" + f.name: errors.New("default option is supported only on: bool, float variants, string, unit variants types or their corresponding pointers or slices")}) continue @@ -129,10 +138,13 @@ func (d *Decoder) setDefaults(t reflect.Type, v reflect.Value) MultiError { defaultSlice := reflect.MakeSlice(f.typ, 0, cap(vals)) for _, val := range vals { - //this check is to handle if the wrong value is provided - if convertedVal := builtinConverters[f.typ.Elem().Kind()](val); convertedVal.IsValid() { - defaultSlice = reflect.Append(defaultSlice, convertedVal) + // this check is to handle if the wrong value is provided + convertedVal := builtinConverters[f.typ.Elem().Kind()](val) + if !convertedVal.IsValid() { + errs.merge(MultiError{"default-" + f.name: fmt.Errorf("failed setting default: %s is not compatible with field %s type", val, f.name)}) + break } + defaultSlice = reflect.Append(defaultSlice, convertedVal) } vCurrent.Set(defaultSlice) } else if f.typ.Kind() == reflect.Ptr { @@ -142,12 +154,12 @@ func (d *Decoder) setDefaults(t reflect.Type, v reflect.Value) MultiError { errs.merge(MultiError{"default-" + f.name: errors.New("default option is supported only on: bool, float variants, string, unit variants types or their corresponding pointers or slices")}) } - //this check is to handle if the wrong value is provided + // this check is to handle if the wrong value is provided if convertedVal := convertPointer(t1.Kind(), f.defaultValue); convertedVal.IsValid() { vCurrent.Set(convertedVal) } } else { - //this check is to handle if the wrong value is provided + // this check is to handle if the wrong value is provided if convertedVal := builtinConverters[f.typ.Kind()](f.defaultValue); convertedVal.IsValid() { vCurrent.Set(builtinConverters[f.typ.Kind()](f.defaultValue)) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 140511d0f79e..02c159895c8c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -684,7 +684,7 @@ github.com/gorilla/handlers # github.com/gorilla/mux v1.8.1 ## explicit; go 1.20 github.com/gorilla/mux -# github.com/gorilla/schema v1.3.0 +# github.com/gorilla/schema v1.4.0 ## explicit; go 1.20 github.com/gorilla/schema # github.com/hashicorp/errwrap v1.1.0