From 4c163fe4b0e6bf3c9c3ddda1806e9c8a959a185c Mon Sep 17 00:00:00 2001 From: Tanmay Mohapatra Date: Sun, 4 Aug 2024 15:13:09 +0530 Subject: [PATCH] [Go] Fix deepObject serialization that are anyOf (#19090) * [Go] Fix deepObject serialization that are anyOf Updates the go client generator to have the generated struct for anyOf types conform to `MappedNullable` interface. Fixes query params serialization for deepObjects that are of `anyOf` type. Implements the suggestion in https://github.com/OpenAPITools/openapi-generator/issues/19085 * check parameter style for deepObject serialization * generate samples for go-echo-external-refs-test * move test back to http port * restrict to anyof models with discriminator * update test * add some tests added some tests to `modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml` and regenerated the samples --- .../src/main/resources/go/api.mustache | 20 +- .../src/main/resources/go/client.mustache | 16 +- .../main/resources/go/model_anyof.mustache | 17 ++ ...odels-for-testing-with-http-signature.yaml | 51 +++++ .../echo_api/go-external-refs/api_form.go | 18 +- .../echo_api/go-external-refs/api_header.go | 10 +- .../echo_api/go-external-refs/api_query.go | 30 +-- .../echo_api/go-external-refs/client.go | 16 +- samples/client/echo_api/go/api_form.go | 20 +- samples/client/echo_api/go/api_header.go | 10 +- samples/client/echo_api/go/api_query.go | 30 +-- samples/client/echo_api/go/client.go | 16 +- .../client.go | 16 +- .../others/go/oneof-anyof-required/client.go | 16 +- .../go/oneof-anyof-required/model_object2.go | 2 + samples/client/petstore/go/auth_test.go | 2 + .../go/go-petstore/api_another_fake.go | 2 +- .../petstore/go/go-petstore/api_fake.go | 72 +++--- .../client/petstore/go/go-petstore/api_pet.go | 14 +- .../petstore/go/go-petstore/api_user.go | 4 +- .../client/petstore/go/go-petstore/client.go | 16 +- samples/client/petstore/go/go.mod | 8 +- samples/client/petstore/go/go.sum | 41 ++++ samples/client/petstore/go/pet_api_test.go | 2 +- .../x-auth-id-alias/go-experimental/client.go | 16 +- .../client.go | 16 +- .../client/petstore/go/fake_api_test.go | 5 +- .../go/go-petstore/.openapi-generator/FILES | 6 + .../client/petstore/go/go-petstore/README.md | 4 + .../petstore/go/go-petstore/api/openapi.yaml | 51 +++++ .../petstore/go/go-petstore/api_fake.go | 200 +++++++++++++---- .../client/petstore/go/go-petstore/api_pet.go | 14 +- .../petstore/go/go-petstore/api_user.go | 4 +- .../client/petstore/go/go-petstore/client.go | 16 +- .../petstore/go/go-petstore/docs/FakeAPI.md | 63 ++++++ .../petstore/go/go-petstore/docs/FilterAny.md | 103 +++++++++ .../go/go-petstore/docs/FilterTypeRange.md | 77 +++++++ .../go/go-petstore/docs/FilterTypeRegex.md | 77 +++++++ .../model_any_of_primitive_type.go | 2 + .../go/go-petstore/model_filter_any.go | 191 ++++++++++++++++ .../go/go-petstore/model_filter_type_range.go | 205 ++++++++++++++++++ .../go/go-petstore/model_filter_type_regex.go | 205 ++++++++++++++++++ .../petstore/go/go-petstore/model_gm_fruit.go | 2 + samples/openapi3/client/petstore/go/go.mod | 4 +- samples/openapi3/client/petstore/go/go.sum | 23 ++ 45 files changed, 1500 insertions(+), 233 deletions(-) create mode 100644 samples/openapi3/client/petstore/go/go-petstore/docs/FilterAny.md create mode 100644 samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRange.md create mode 100644 samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRegex.md create mode 100644 samples/openapi3/client/petstore/go/go-petstore/model_filter_any.go create mode 100644 samples/openapi3/client/petstore/go/go-petstore/model_filter_type_range.go create mode 100644 samples/openapi3/client/petstore/go/go-petstore/model_filter_type_regex.go diff --git a/modules/openapi-generator/src/main/resources/go/api.mustache b/modules/openapi-generator/src/main/resources/go/api.mustache index fe01e202b2c..84da8017fdf 100644 --- a/modules/openapi-generator/src/main/resources/go/api.mustache +++ b/modules/openapi-generator/src/main/resources/go/api.mustache @@ -189,15 +189,15 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) for i := 0; i < s.Len(); i++ { - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", s.Index(i).Interface(), "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", s.Index(i).Interface(), "{{style}}", "{{collectionFormat}}") } } else { - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", t, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", t, "{{style}}", "{{collectionFormat}}") } } {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") {{/isCollectionFormatMulti}} {{/required}} {{^required}} @@ -207,14 +207,14 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) for i := 0; i < s.Len(); i++ { - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", s.Index(i).Interface(), "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", s.Index(i).Interface(), "{{style}}", "{{collectionFormat}}") } } else { - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", t, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", t, "{{style}}", "{{collectionFormat}}") } {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} - parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarQueryParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") {{/isCollectionFormatMulti}} {{#defaultValue}}} else { var defaultValue {{{dataType}}} = {{{.}}} @@ -245,11 +245,11 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class } {{#headerParams}} {{#required}} - parameterAddToHeaderOrQuery(localVarHeaderParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarHeaderParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") {{/required}} {{^required}} if r.{{paramName}} != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarHeaderParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") } {{/required}} {{/headerParams}} @@ -295,7 +295,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class {{/isFile}} {{^isFile}} {{#required}} - parameterAddToHeaderOrQuery(localVarFormParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarFormParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") {{/required}} {{^required}} {{#isModel}} @@ -309,7 +309,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class {{/isModel}} {{^isModel}} if r.{{paramName}} != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "{{{baseName}}}", r.{{paramName}}, "{{collectionFormat}}") + parameterAddToHeaderOrQuery(localVarFormParams, "{{{baseName}}}", r.{{paramName}}, "{{style}}", "{{collectionFormat}}") } {{/isModel}} {{/required}} diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index a5f058b8e84..f74fc88a84c 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -152,7 +152,7 @@ func parameterValueToString( obj interface{}, key string ) string { // parameterAddToHeaderOrQuery adds the provided object to the request header or url query // supporting deep object syntax -func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string) { +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) { var v = reflect.ValueOf(obj) var value = "" if v == reflect.ValueOf(nil) { @@ -168,11 +168,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri if err != nil { return } - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType) return } if t, ok := obj.(time.Time); ok { - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType) return } value = v.Type().String() + " value" @@ -184,7 +184,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri var lenIndValue = indValue.Len() for i:=0;inullable_model}} diff --git a/modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml b/modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml index e708225c472..766fde557fe 100644 --- a/modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml @@ -1233,6 +1233,22 @@ paths: responses: '200': description: OK + /fake/deep_object_anyof_test: + get: + tags: + - fake + operationId: test_query_deep_object_anyof + parameters: + - name: filter + in: query + required: false + style: deepObject + schema: + $ref: '#/components/schemas/FilterAny' + explode: false + responses: + '200': + description: OK /fake/parameter-name-mapping: get: tags: @@ -1375,6 +1391,41 @@ components: type: http scheme: signature schemas: + FilterTypeRegex: + type: object + properties: + type: + enum: + - set + - range + type: string + regex: + type: string + required: + - type + FilterTypeRange: + type: object + properties: + type: + enum: + - set + - range + type: string + data: + type: array + items: + type: string + required: + - type + FilterAny: + anyOf: + - $ref: '#/components/schemas/FilterTypeRegex' + - $ref: '#/components/schemas/FilterTypeRange' + discriminator: + mapping: + set: '#/components/schemas/FilterTypeRegex' + range: '#/components/schemas/FilterTypeRange' + propertyName: type MapWithDateTime: type: object additionalProperties: diff --git a/samples/client/echo_api/go-external-refs/api_form.go b/samples/client/echo_api/go-external-refs/api_form.go index 4aa3386dc97..6930be521ef 100644 --- a/samples/client/echo_api/go-external-refs/api_form.go +++ b/samples/client/echo_api/go-external-refs/api_form.go @@ -104,13 +104,13 @@ func (a *FormAPIService) TestFormIntegerBooleanStringExecute(r ApiTestFormIntege localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.integerForm != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "integer_form", r.integerForm, "") + parameterAddToHeaderOrQuery(localVarFormParams, "integer_form", r.integerForm, "", "") } if r.booleanForm != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "boolean_form", r.booleanForm, "") + parameterAddToHeaderOrQuery(localVarFormParams, "boolean_form", r.booleanForm, "", "") } if r.stringForm != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "string_form", r.stringForm, "") + parameterAddToHeaderOrQuery(localVarFormParams, "string_form", r.stringForm, "", "") } req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { @@ -248,22 +248,22 @@ func (a *FormAPIService) TestFormOneofExecute(r ApiTestFormOneofRequest) (string localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.form1 != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "form1", r.form1, "") + parameterAddToHeaderOrQuery(localVarFormParams, "form1", r.form1, "", "") } if r.form2 != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "form2", r.form2, "") + parameterAddToHeaderOrQuery(localVarFormParams, "form2", r.form2, "", "") } if r.form3 != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "form3", r.form3, "") + parameterAddToHeaderOrQuery(localVarFormParams, "form3", r.form3, "", "") } if r.form4 != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "form4", r.form4, "") + parameterAddToHeaderOrQuery(localVarFormParams, "form4", r.form4, "", "") } if r.id != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "id", r.id, "") + parameterAddToHeaderOrQuery(localVarFormParams, "id", r.id, "", "") } if r.name != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "name", r.name, "") + parameterAddToHeaderOrQuery(localVarFormParams, "name", r.name, "", "") } req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { diff --git a/samples/client/echo_api/go-external-refs/api_header.go b/samples/client/echo_api/go-external-refs/api_header.go index 364bd3c5ea3..5984319dd2e 100644 --- a/samples/client/echo_api/go-external-refs/api_header.go +++ b/samples/client/echo_api/go-external-refs/api_header.go @@ -116,19 +116,19 @@ func (a *HeaderAPIService) TestHeaderIntegerBooleanStringEnumsExecute(r ApiTestH localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.integerHeader != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "integer_header", r.integerHeader, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "integer_header", r.integerHeader, "form", "") } if r.booleanHeader != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "boolean_header", r.booleanHeader, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "boolean_header", r.booleanHeader, "form", "") } if r.stringHeader != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "string_header", r.stringHeader, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "string_header", r.stringHeader, "form", "") } if r.enumNonrefStringHeader != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "enum_nonref_string_header", r.enumNonrefStringHeader, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "enum_nonref_string_header", r.enumNonrefStringHeader, "form", "") } if r.enumRefStringHeader != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "enum_ref_string_header", r.enumRefStringHeader, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "enum_ref_string_header", r.enumRefStringHeader, "form", "") } req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { diff --git a/samples/client/echo_api/go-external-refs/api_query.go b/samples/client/echo_api/go-external-refs/api_query.go index 2e45bf16b6d..bad8fb08f39 100644 --- a/samples/client/echo_api/go-external-refs/api_query.go +++ b/samples/client/echo_api/go-external-refs/api_query.go @@ -82,10 +82,10 @@ func (a *QueryAPIService) TestEnumRefStringExecute(r ApiTestEnumRefStringRequest localVarFormParams := url.Values{} if r.enumNonrefStringQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "enum_nonref_string_query", r.enumNonrefStringQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "enum_nonref_string_query", r.enumNonrefStringQuery, "form", "") } if r.enumRefStringQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "enum_ref_string_query", r.enumRefStringQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "enum_ref_string_query", r.enumRefStringQuery, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -205,13 +205,13 @@ func (a *QueryAPIService) TestQueryDatetimeDateStringExecute(r ApiTestQueryDatet localVarFormParams := url.Values{} if r.datetimeQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "datetime_query", r.datetimeQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "datetime_query", r.datetimeQuery, "form", "") } if r.dateQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "date_query", r.dateQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "date_query", r.dateQuery, "form", "") } if r.stringQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "string_query", r.stringQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "string_query", r.stringQuery, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -331,13 +331,13 @@ func (a *QueryAPIService) TestQueryIntegerBooleanStringExecute(r ApiTestQueryInt localVarFormParams := url.Values{} if r.integerQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "integer_query", r.integerQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "integer_query", r.integerQuery, "form", "") } if r.booleanQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "boolean_query", r.booleanQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "boolean_query", r.booleanQuery, "form", "") } if r.stringQuery != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "string_query", r.stringQuery, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "string_query", r.stringQuery, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -445,7 +445,7 @@ func (a *QueryAPIService) TestQueryStyleDeepObjectExplodeTrueObjectExecute(r Api localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "deepObject", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -553,7 +553,7 @@ func (a *QueryAPIService) TestQueryStyleDeepObjectExplodeTrueObjectAllOfExecute( localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "deepObject", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -661,7 +661,7 @@ func (a *QueryAPIService) TestQueryStyleFormExplodeFalseArrayIntegerExecute(r Ap localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "form", "csv") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -769,7 +769,7 @@ func (a *QueryAPIService) TestQueryStyleFormExplodeFalseArrayStringExecute(r Api localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "form", "csv") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -877,7 +877,7 @@ func (a *QueryAPIService) TestQueryStyleFormExplodeTrueArrayStringExecute(r ApiT localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -985,7 +985,7 @@ func (a *QueryAPIService) TestQueryStyleFormExplodeTrueObjectExecute(r ApiTestQu localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -1093,7 +1093,7 @@ func (a *QueryAPIService) TestQueryStyleFormExplodeTrueObjectAllOfExecute(r ApiT localVarFormParams := url.Values{} if r.queryObject != nil { - parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "query_object", r.queryObject, "form", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} diff --git a/samples/client/echo_api/go-external-refs/client.go b/samples/client/echo_api/go-external-refs/client.go index b725fb3f6d9..29662b18543 100644 --- a/samples/client/echo_api/go-external-refs/client.go +++ b/samples/client/echo_api/go-external-refs/client.go @@ -158,7 +158,7 @@ func parameterValueToString( obj interface{}, key string ) string { // parameterAddToHeaderOrQuery adds the provided object to the request header or url query // supporting deep object syntax -func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string) { +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) { var v = reflect.ValueOf(obj) var value = "" if v == reflect.ValueOf(nil) { @@ -174,11 +174,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri if err != nil { return } - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType) return } if t, ok := obj.(time.Time); ok { - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType) return } value = v.Type().String() + " value" @@ -190,7 +190,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri var lenIndValue = indValue.Len() for i:=0;i= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiTestQueryDeepObjectAnyofRequest struct { + ctx context.Context + ApiService FakeAPI + filter *FilterAny +} + +func (r ApiTestQueryDeepObjectAnyofRequest) Filter(filter FilterAny) ApiTestQueryDeepObjectAnyofRequest { + r.filter = &filter + return r +} + +func (r ApiTestQueryDeepObjectAnyofRequest) Execute() (*http.Response, error) { + return r.ApiService.TestQueryDeepObjectAnyofExecute(r) +} + +/* +TestQueryDeepObjectAnyof Method for TestQueryDeepObjectAnyof + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiTestQueryDeepObjectAnyofRequest +*/ +func (a *FakeAPIService) TestQueryDeepObjectAnyof(ctx context.Context) ApiTestQueryDeepObjectAnyofRequest { + return ApiTestQueryDeepObjectAnyofRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +func (a *FakeAPIService) TestQueryDeepObjectAnyofExecute(r ApiTestQueryDeepObjectAnyofRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "FakeAPIService.TestQueryDeepObjectAnyof") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/fake/deep_object_anyof_test" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.filter != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "filter", r.filter, "deepObject", "") } // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -2474,24 +2580,24 @@ func (a *FakeAPIService) TestQueryParameterCollectionFormatExecute(r ApiTestQuer if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) for i := 0; i < s.Len(); i++ { - parameterAddToHeaderOrQuery(localVarQueryParams, "pipe", s.Index(i).Interface(), "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "pipe", s.Index(i).Interface(), "form", "multi") } } else { - parameterAddToHeaderOrQuery(localVarQueryParams, "pipe", t, "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "pipe", t, "form", "multi") } } - parameterAddToHeaderOrQuery(localVarQueryParams, "ioutil", r.ioutil, "csv") - parameterAddToHeaderOrQuery(localVarQueryParams, "http", r.http, "ssv") - parameterAddToHeaderOrQuery(localVarQueryParams, "url", r.url, "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "ioutil", r.ioutil, "form", "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "http", r.http, "spaceDelimited", "ssv") + parameterAddToHeaderOrQuery(localVarQueryParams, "url", r.url, "form", "csv") { t := *r.context if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) for i := 0; i < s.Len(); i++ { - parameterAddToHeaderOrQuery(localVarQueryParams, "context", s.Index(i).Interface(), "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "context", s.Index(i).Interface(), "form", "multi") } } else { - parameterAddToHeaderOrQuery(localVarQueryParams, "context", t, "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "context", t, "form", "multi") } } // to determine the Content-Type header @@ -2707,10 +2813,10 @@ func (a *FakeAPIService) TestUniqueItemsHeaderAndQueryParameterCollectionFormatE if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) for i := 0; i < s.Len(); i++ { - parameterAddToHeaderOrQuery(localVarQueryParams, "queryUnique", s.Index(i).Interface(), "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "queryUnique", s.Index(i).Interface(), "form", "multi") } } else { - parameterAddToHeaderOrQuery(localVarQueryParams, "queryUnique", t, "multi") + parameterAddToHeaderOrQuery(localVarQueryParams, "queryUnique", t, "form", "multi") } } // to determine the Content-Type header @@ -2730,7 +2836,7 @@ func (a *FakeAPIService) TestUniqueItemsHeaderAndQueryParameterCollectionFormatE if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } - parameterAddToHeaderOrQuery(localVarHeaderParams, "headerUnique", r.headerUnique, "csv") + parameterAddToHeaderOrQuery(localVarHeaderParams, "headerUnique", r.headerUnique, "simple", "csv") req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { return localVarReturnValue, nil, err diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_pet.go b/samples/openapi3/client/petstore/go/go-petstore/api_pet.go index 6a3556ec497..86b91af49a3 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_pet.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_pet.go @@ -328,7 +328,7 @@ func (a *PetAPIService) DeletePetExecute(r ApiDeletePetRequest) (*http.Response, localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.apiKey != nil { - parameterAddToHeaderOrQuery(localVarHeaderParams, "api_key", r.apiKey, "") + parameterAddToHeaderOrQuery(localVarHeaderParams, "api_key", r.apiKey, "simple", "") } req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { @@ -414,7 +414,7 @@ func (a *PetAPIService) FindPetsByStatusExecute(r ApiFindPetsByStatusRequest) ([ return localVarReturnValue, nil, reportError("status is required and must be specified") } - parameterAddToHeaderOrQuery(localVarQueryParams, "status", r.status, "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "status", r.status, "form", "csv") // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -527,7 +527,7 @@ func (a *PetAPIService) FindPetsByTagsExecute(r ApiFindPetsByTagsRequest) ([]Pet return localVarReturnValue, nil, reportError("tags is required and must be specified") } - parameterAddToHeaderOrQuery(localVarQueryParams, "tags", r.tags, "csv") + parameterAddToHeaderOrQuery(localVarQueryParams, "tags", r.tags, "form", "csv") // to determine the Content-Type header localVarHTTPContentTypes := []string{} @@ -878,10 +878,10 @@ func (a *PetAPIService) UpdatePetWithFormExecute(r ApiUpdatePetWithFormRequest) localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.name != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "name", r.name, "") + parameterAddToHeaderOrQuery(localVarFormParams, "name", r.name, "", "") } if r.status != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "status", r.status, "") + parameterAddToHeaderOrQuery(localVarFormParams, "status", r.status, "", "") } req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) if err != nil { @@ -992,7 +992,7 @@ func (a *PetAPIService) UploadFileExecute(r ApiUploadFileRequest) (*ApiResponse, localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.additionalMetadata != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "additionalMetadata", r.additionalMetadata, "") + parameterAddToHeaderOrQuery(localVarFormParams, "additionalMetadata", r.additionalMetadata, "", "") } var fileLocalVarFormFileName string var fileLocalVarFileName string @@ -1130,7 +1130,7 @@ func (a *PetAPIService) UploadFileWithRequiredFileExecute(r ApiUploadFileWithReq localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if r.additionalMetadata != nil { - parameterAddToHeaderOrQuery(localVarFormParams, "additionalMetadata", r.additionalMetadata, "") + parameterAddToHeaderOrQuery(localVarFormParams, "additionalMetadata", r.additionalMetadata, "", "") } var requiredFileLocalVarFormFileName string var requiredFileLocalVarFileName string diff --git a/samples/openapi3/client/petstore/go/go-petstore/api_user.go b/samples/openapi3/client/petstore/go/go-petstore/api_user.go index 7809f9521a3..a739258939e 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api_user.go +++ b/samples/openapi3/client/petstore/go/go-petstore/api_user.go @@ -695,8 +695,8 @@ func (a *UserAPIService) LoginUserExecute(r ApiLoginUserRequest) (string, *http. return localVarReturnValue, nil, reportError("password is required and must be specified") } - parameterAddToHeaderOrQuery(localVarQueryParams, "username", r.username, "") - parameterAddToHeaderOrQuery(localVarQueryParams, "password", r.password, "") + parameterAddToHeaderOrQuery(localVarQueryParams, "username", r.username, "form", "") + parameterAddToHeaderOrQuery(localVarQueryParams, "password", r.password, "form", "") // to determine the Content-Type header localVarHTTPContentTypes := []string{} diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index 42c1dfd0495..78fd61f75fc 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -161,7 +161,7 @@ func parameterValueToString( obj interface{}, key string ) string { // parameterAddToHeaderOrQuery adds the provided object to the request header or url query // supporting deep object syntax -func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string) { +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) { var v = reflect.ValueOf(obj) var value = "" if v == reflect.ValueOf(nil) { @@ -177,11 +177,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri if err != nil { return } - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType) return } if t, ok := obj.(time.Time); ok { - parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), collectionType) + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType) return } value = v.Type().String() + " value" @@ -193,7 +193,11 @@ func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix stri var lenIndValue = indValue.Len() for i:=0;i TestQueryDeepObjectAnyof(ctx).Filter(filter).Execute() + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID" +) + +func main() { + filter := *openapiclient.NewFilterAny("Type_example") // FilterAny | (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.FakeAPI.TestQueryDeepObjectAnyof(context.Background()).Filter(filter).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `FakeAPI.TestQueryDeepObjectAnyof``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiTestQueryDeepObjectAnyofRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | [**FilterAny**](FilterAny.md) | | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + ## TestQueryParameterCollectionFormat > TestQueryParameterCollectionFormat(ctx).Pipe(pipe).Ioutil(ioutil).Http(http).Url(url).Context(context).Execute() diff --git a/samples/openapi3/client/petstore/go/go-petstore/docs/FilterAny.md b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterAny.md new file mode 100644 index 00000000000..beada8f60c0 --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterAny.md @@ -0,0 +1,103 @@ +# FilterAny + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | +**Regex** | Pointer to **string** | | [optional] +**Data** | Pointer to **[]string** | | [optional] + +## Methods + +### NewFilterAny + +`func NewFilterAny(type_ string, ) *FilterAny` + +NewFilterAny instantiates a new FilterAny object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewFilterAnyWithDefaults + +`func NewFilterAnyWithDefaults() *FilterAny` + +NewFilterAnyWithDefaults instantiates a new FilterAny object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetType + +`func (o *FilterAny) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *FilterAny) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *FilterAny) SetType(v string)` + +SetType sets Type field to given value. + + +### GetRegex + +`func (o *FilterAny) GetRegex() string` + +GetRegex returns the Regex field if non-nil, zero value otherwise. + +### GetRegexOk + +`func (o *FilterAny) GetRegexOk() (*string, bool)` + +GetRegexOk returns a tuple with the Regex field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRegex + +`func (o *FilterAny) SetRegex(v string)` + +SetRegex sets Regex field to given value. + +### HasRegex + +`func (o *FilterAny) HasRegex() bool` + +HasRegex returns a boolean if a field has been set. + +### GetData + +`func (o *FilterAny) GetData() []string` + +GetData returns the Data field if non-nil, zero value otherwise. + +### GetDataOk + +`func (o *FilterAny) GetDataOk() (*[]string, bool)` + +GetDataOk returns a tuple with the Data field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetData + +`func (o *FilterAny) SetData(v []string)` + +SetData sets Data field to given value. + +### HasData + +`func (o *FilterAny) HasData() bool` + +HasData returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRange.md b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRange.md new file mode 100644 index 00000000000..436cb910496 --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRange.md @@ -0,0 +1,77 @@ +# FilterTypeRange + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | +**Data** | Pointer to **[]string** | | [optional] + +## Methods + +### NewFilterTypeRange + +`func NewFilterTypeRange(type_ string, ) *FilterTypeRange` + +NewFilterTypeRange instantiates a new FilterTypeRange object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewFilterTypeRangeWithDefaults + +`func NewFilterTypeRangeWithDefaults() *FilterTypeRange` + +NewFilterTypeRangeWithDefaults instantiates a new FilterTypeRange object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetType + +`func (o *FilterTypeRange) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *FilterTypeRange) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *FilterTypeRange) SetType(v string)` + +SetType sets Type field to given value. + + +### GetData + +`func (o *FilterTypeRange) GetData() []string` + +GetData returns the Data field if non-nil, zero value otherwise. + +### GetDataOk + +`func (o *FilterTypeRange) GetDataOk() (*[]string, bool)` + +GetDataOk returns a tuple with the Data field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetData + +`func (o *FilterTypeRange) SetData(v []string)` + +SetData sets Data field to given value. + +### HasData + +`func (o *FilterTypeRange) HasData() bool` + +HasData returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRegex.md b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRegex.md new file mode 100644 index 00000000000..e11048f19aa --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/docs/FilterTypeRegex.md @@ -0,0 +1,77 @@ +# FilterTypeRegex + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | +**Regex** | Pointer to **string** | | [optional] + +## Methods + +### NewFilterTypeRegex + +`func NewFilterTypeRegex(type_ string, ) *FilterTypeRegex` + +NewFilterTypeRegex instantiates a new FilterTypeRegex object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewFilterTypeRegexWithDefaults + +`func NewFilterTypeRegexWithDefaults() *FilterTypeRegex` + +NewFilterTypeRegexWithDefaults instantiates a new FilterTypeRegex object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetType + +`func (o *FilterTypeRegex) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *FilterTypeRegex) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *FilterTypeRegex) SetType(v string)` + +SetType sets Type field to given value. + + +### GetRegex + +`func (o *FilterTypeRegex) GetRegex() string` + +GetRegex returns the Regex field if non-nil, zero value otherwise. + +### GetRegexOk + +`func (o *FilterTypeRegex) GetRegexOk() (*string, bool)` + +GetRegexOk returns a tuple with the Regex field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRegex + +`func (o *FilterTypeRegex) SetRegex(v string)` + +SetRegex sets Regex field to given value. + +### HasRegex + +`func (o *FilterTypeRegex) HasRegex() bool` + +HasRegex returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_any_of_primitive_type.go b/samples/openapi3/client/petstore/go/go-petstore/model_any_of_primitive_type.go index aa60b47e5cc..c18a0c8a215 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_any_of_primitive_type.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_any_of_primitive_type.go @@ -15,6 +15,7 @@ import ( "fmt" ) + // AnyOfPrimitiveType struct for AnyOfPrimitiveType type AnyOfPrimitiveType struct { OneOfPrimitiveTypeChild *OneOfPrimitiveTypeChild @@ -84,6 +85,7 @@ func (src *AnyOfPrimitiveType) MarshalJSON() ([]byte, error) { return nil, nil // no data in anyOf schemas } + type NullableAnyOfPrimitiveType struct { value *AnyOfPrimitiveType isSet bool diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_filter_any.go b/samples/openapi3/client/petstore/go/go-petstore/model_filter_any.go new file mode 100644 index 00000000000..f2785ce45ee --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/model_filter_any.go @@ -0,0 +1,191 @@ +/* +OpenAPI Petstore + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +API version: 1.0.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package petstore + +import ( + "encoding/json" + "fmt" +) + +// checks if the FilterAny type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FilterAny{} + +// FilterAny struct for FilterAny +type FilterAny struct { + FilterTypeRange *FilterTypeRange + FilterTypeRegex *FilterTypeRegex +} + +// Unmarshal JSON data into any of the pointers in the struct +func (dst *FilterAny) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = json.Unmarshal(data, &jsonDict) + if err != nil { + return fmt.Errorf("failed to unmarshal JSON into map for the discriminator lookup") + } + + // check if the discriminator value is 'range' + if jsonDict["type"] == "range" { + // try to unmarshal JSON data into FilterTypeRange + err = json.Unmarshal(data, &dst.FilterTypeRange); + if err == nil { + jsonFilterTypeRange, _ := json.Marshal(dst.FilterTypeRange) + if string(jsonFilterTypeRange) == "{}" { // empty struct + dst.FilterTypeRange = nil + } else { + return nil // data stored in dst.FilterTypeRange, return on the first match + } + } else { + dst.FilterTypeRange = nil + } + } + + // check if the discriminator value is 'set' + if jsonDict["type"] == "set" { + // try to unmarshal JSON data into FilterTypeRegex + err = json.Unmarshal(data, &dst.FilterTypeRegex); + if err == nil { + jsonFilterTypeRegex, _ := json.Marshal(dst.FilterTypeRegex) + if string(jsonFilterTypeRegex) == "{}" { // empty struct + dst.FilterTypeRegex = nil + } else { + return nil // data stored in dst.FilterTypeRegex, return on the first match + } + } else { + dst.FilterTypeRegex = nil + } + } + + // check if the discriminator value is 'FilterTypeRange' + if jsonDict["type"] == "FilterTypeRange" { + // try to unmarshal JSON data into FilterTypeRange + err = json.Unmarshal(data, &dst.FilterTypeRange); + if err == nil { + jsonFilterTypeRange, _ := json.Marshal(dst.FilterTypeRange) + if string(jsonFilterTypeRange) == "{}" { // empty struct + dst.FilterTypeRange = nil + } else { + return nil // data stored in dst.FilterTypeRange, return on the first match + } + } else { + dst.FilterTypeRange = nil + } + } + + // check if the discriminator value is 'FilterTypeRegex' + if jsonDict["type"] == "FilterTypeRegex" { + // try to unmarshal JSON data into FilterTypeRegex + err = json.Unmarshal(data, &dst.FilterTypeRegex); + if err == nil { + jsonFilterTypeRegex, _ := json.Marshal(dst.FilterTypeRegex) + if string(jsonFilterTypeRegex) == "{}" { // empty struct + dst.FilterTypeRegex = nil + } else { + return nil // data stored in dst.FilterTypeRegex, return on the first match + } + } else { + dst.FilterTypeRegex = nil + } + } + + // try to unmarshal JSON data into FilterTypeRange + err = json.Unmarshal(data, &dst.FilterTypeRange); + if err == nil { + jsonFilterTypeRange, _ := json.Marshal(dst.FilterTypeRange) + if string(jsonFilterTypeRange) == "{}" { // empty struct + dst.FilterTypeRange = nil + } else { + return nil // data stored in dst.FilterTypeRange, return on the first match + } + } else { + dst.FilterTypeRange = nil + } + + // try to unmarshal JSON data into FilterTypeRegex + err = json.Unmarshal(data, &dst.FilterTypeRegex); + if err == nil { + jsonFilterTypeRegex, _ := json.Marshal(dst.FilterTypeRegex) + if string(jsonFilterTypeRegex) == "{}" { // empty struct + dst.FilterTypeRegex = nil + } else { + return nil // data stored in dst.FilterTypeRegex, return on the first match + } + } else { + dst.FilterTypeRegex = nil + } + + return fmt.Errorf("data failed to match schemas in anyOf(FilterAny)") +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src *FilterAny) MarshalJSON() ([]byte, error) { + if src.FilterTypeRange != nil { + return json.Marshal(&src.FilterTypeRange) + } + + if src.FilterTypeRegex != nil { + return json.Marshal(&src.FilterTypeRegex) + } + + return nil, nil // no data in anyOf schemas +} + +func (src FilterAny) ToMap() (map[string]interface{}, error) { + if src.FilterTypeRange != nil { + return src.FilterTypeRange.ToMap() + } + + if src.FilterTypeRegex != nil { + return src.FilterTypeRegex.ToMap() + } + + return nil, nil // no data in anyOf schemas +} + +type NullableFilterAny struct { + value *FilterAny + isSet bool +} + +func (v NullableFilterAny) Get() *FilterAny { + return v.value +} + +func (v *NullableFilterAny) Set(val *FilterAny) { + v.value = val + v.isSet = true +} + +func (v NullableFilterAny) IsSet() bool { + return v.isSet +} + +func (v *NullableFilterAny) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFilterAny(val *FilterAny) *NullableFilterAny { + return &NullableFilterAny{value: val, isSet: true} +} + +func (v NullableFilterAny) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFilterAny) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_range.go b/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_range.go new file mode 100644 index 00000000000..1997a473f62 --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_range.go @@ -0,0 +1,205 @@ +/* +OpenAPI Petstore + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +API version: 1.0.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package petstore + +import ( + "encoding/json" + "fmt" +) + +// checks if the FilterTypeRange type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FilterTypeRange{} + +// FilterTypeRange struct for FilterTypeRange +type FilterTypeRange struct { + Type string `json:"type"` + Data []string `json:"data,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _FilterTypeRange FilterTypeRange + +// NewFilterTypeRange instantiates a new FilterTypeRange object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewFilterTypeRange(type_ string) *FilterTypeRange { + this := FilterTypeRange{} + this.Type = type_ + return &this +} + +// NewFilterTypeRangeWithDefaults instantiates a new FilterTypeRange object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewFilterTypeRangeWithDefaults() *FilterTypeRange { + this := FilterTypeRange{} + return &this +} + +// GetType returns the Type field value +func (o *FilterTypeRange) GetType() string { + if o == nil { + var ret string + return ret + } + + return o.Type +} + +// GetTypeOk returns a tuple with the Type field value +// and a boolean to check if the value has been set. +func (o *FilterTypeRange) GetTypeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Type, true +} + +// SetType sets field value +func (o *FilterTypeRange) SetType(v string) { + o.Type = v +} + +// GetData returns the Data field value if set, zero value otherwise. +func (o *FilterTypeRange) GetData() []string { + if o == nil || IsNil(o.Data) { + var ret []string + return ret + } + return o.Data +} + +// GetDataOk returns a tuple with the Data field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FilterTypeRange) GetDataOk() ([]string, bool) { + if o == nil || IsNil(o.Data) { + return nil, false + } + return o.Data, true +} + +// HasData returns a boolean if a field has been set. +func (o *FilterTypeRange) HasData() bool { + if o != nil && !IsNil(o.Data) { + return true + } + + return false +} + +// SetData gets a reference to the given []string and assigns it to the Data field. +func (o *FilterTypeRange) SetData(v []string) { + o.Data = v +} + +func (o FilterTypeRange) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o FilterTypeRange) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["type"] = o.Type + if !IsNil(o.Data) { + toSerialize["data"] = o.Data + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *FilterTypeRange) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "type", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err; + } + + for _, requiredProperty := range(requiredProperties) { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varFilterTypeRange := _FilterTypeRange{} + + err = json.Unmarshal(data, &varFilterTypeRange) + + if err != nil { + return err + } + + *o = FilterTypeRange(varFilterTypeRange) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "type") + delete(additionalProperties, "data") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableFilterTypeRange struct { + value *FilterTypeRange + isSet bool +} + +func (v NullableFilterTypeRange) Get() *FilterTypeRange { + return v.value +} + +func (v *NullableFilterTypeRange) Set(val *FilterTypeRange) { + v.value = val + v.isSet = true +} + +func (v NullableFilterTypeRange) IsSet() bool { + return v.isSet +} + +func (v *NullableFilterTypeRange) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFilterTypeRange(val *FilterTypeRange) *NullableFilterTypeRange { + return &NullableFilterTypeRange{value: val, isSet: true} +} + +func (v NullableFilterTypeRange) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFilterTypeRange) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_regex.go b/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_regex.go new file mode 100644 index 00000000000..3f562665a3e --- /dev/null +++ b/samples/openapi3/client/petstore/go/go-petstore/model_filter_type_regex.go @@ -0,0 +1,205 @@ +/* +OpenAPI Petstore + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +API version: 1.0.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package petstore + +import ( + "encoding/json" + "fmt" +) + +// checks if the FilterTypeRegex type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FilterTypeRegex{} + +// FilterTypeRegex struct for FilterTypeRegex +type FilterTypeRegex struct { + Type string `json:"type"` + Regex *string `json:"regex,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _FilterTypeRegex FilterTypeRegex + +// NewFilterTypeRegex instantiates a new FilterTypeRegex object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewFilterTypeRegex(type_ string) *FilterTypeRegex { + this := FilterTypeRegex{} + this.Type = type_ + return &this +} + +// NewFilterTypeRegexWithDefaults instantiates a new FilterTypeRegex object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewFilterTypeRegexWithDefaults() *FilterTypeRegex { + this := FilterTypeRegex{} + return &this +} + +// GetType returns the Type field value +func (o *FilterTypeRegex) GetType() string { + if o == nil { + var ret string + return ret + } + + return o.Type +} + +// GetTypeOk returns a tuple with the Type field value +// and a boolean to check if the value has been set. +func (o *FilterTypeRegex) GetTypeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Type, true +} + +// SetType sets field value +func (o *FilterTypeRegex) SetType(v string) { + o.Type = v +} + +// GetRegex returns the Regex field value if set, zero value otherwise. +func (o *FilterTypeRegex) GetRegex() string { + if o == nil || IsNil(o.Regex) { + var ret string + return ret + } + return *o.Regex +} + +// GetRegexOk returns a tuple with the Regex field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FilterTypeRegex) GetRegexOk() (*string, bool) { + if o == nil || IsNil(o.Regex) { + return nil, false + } + return o.Regex, true +} + +// HasRegex returns a boolean if a field has been set. +func (o *FilterTypeRegex) HasRegex() bool { + if o != nil && !IsNil(o.Regex) { + return true + } + + return false +} + +// SetRegex gets a reference to the given string and assigns it to the Regex field. +func (o *FilterTypeRegex) SetRegex(v string) { + o.Regex = &v +} + +func (o FilterTypeRegex) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o FilterTypeRegex) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["type"] = o.Type + if !IsNil(o.Regex) { + toSerialize["regex"] = o.Regex + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *FilterTypeRegex) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "type", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err; + } + + for _, requiredProperty := range(requiredProperties) { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varFilterTypeRegex := _FilterTypeRegex{} + + err = json.Unmarshal(data, &varFilterTypeRegex) + + if err != nil { + return err + } + + *o = FilterTypeRegex(varFilterTypeRegex) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "type") + delete(additionalProperties, "regex") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableFilterTypeRegex struct { + value *FilterTypeRegex + isSet bool +} + +func (v NullableFilterTypeRegex) Get() *FilterTypeRegex { + return v.value +} + +func (v *NullableFilterTypeRegex) Set(val *FilterTypeRegex) { + v.value = val + v.isSet = true +} + +func (v NullableFilterTypeRegex) IsSet() bool { + return v.isSet +} + +func (v *NullableFilterTypeRegex) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFilterTypeRegex(val *FilterTypeRegex) *NullableFilterTypeRegex { + return &NullableFilterTypeRegex{value: val, isSet: true} +} + +func (v NullableFilterTypeRegex) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFilterTypeRegex) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_gm_fruit.go b/samples/openapi3/client/petstore/go/go-petstore/model_gm_fruit.go index fbed807427e..59c6cbea0d1 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_gm_fruit.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_gm_fruit.go @@ -15,6 +15,7 @@ import ( "fmt" ) + // GmFruit struct for GmFruit type GmFruit struct { Apple *Apple @@ -66,6 +67,7 @@ func (src *GmFruit) MarshalJSON() ([]byte, error) { return nil, nil // no data in anyOf schemas } + type NullableGmFruit struct { value *GmFruit isSet bool diff --git a/samples/openapi3/client/petstore/go/go.mod b/samples/openapi3/client/petstore/go/go.mod index b0b716e7930..6f524409614 100644 --- a/samples/openapi3/client/petstore/go/go.mod +++ b/samples/openapi3/client/petstore/go/go.mod @@ -8,8 +8,8 @@ require ( cloud.google.com/go/compute v1.20.1 // indirect github.com/stretchr/testify v1.9.0 go-petstore v0.0.0-00010101000000-000000000000 - golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.20.0 + golang.org/x/net v0.27.0 // indirect + golang.org/x/oauth2 v0.21.0 google.golang.org/protobuf v1.31.0 // indirect gopkg.in/validator.v2 v2.0.1 // indirect ) diff --git a/samples/openapi3/client/petstore/go/go.sum b/samples/openapi3/client/petstore/go/go.sum index 5c2f7679919..3dda4241110 100644 --- a/samples/openapi3/client/petstore/go/go.sum +++ b/samples/openapi3/client/petstore/go/go.sum @@ -733,6 +733,7 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -892,9 +893,11 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -952,6 +955,9 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1026,11 +1032,14 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1076,6 +1085,8 @@ golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1093,6 +1104,9 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1173,9 +1187,12 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1187,9 +1204,11 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1207,8 +1226,10 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1276,6 +1297,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=