diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java index 9681f435534..e36b288f0be 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java @@ -301,6 +301,11 @@ public void postProcessParameter(CodegenParameter parameter){ StringBuilder sb = new StringBuilder(parameter.paramName); sb.setCharAt(0, Character.toUpperCase(firstChar)); parameter.vendorExtensions.put("x-exportParamName", sb.toString()); + + // Dates are not a primitive. Not sure how this is getting flagged as such. + if (parameter.isDate != null|| parameter.isDateTime != null || parameter.isFile != null) { + parameter.isPrimitiveType = Boolean.FALSE; + } } diff --git a/modules/swagger-codegen/src/main/resources/go/api.mustache b/modules/swagger-codegen/src/main/resources/go/api.mustache index ef388bcf278..44d54828d35 100644 --- a/modules/swagger-codegen/src/main/resources/go/api.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api.mustache @@ -34,10 +34,10 @@ func New{{classname}}WithBasePath(basePath string) *{{classname}} { * {{summary}}{{#notes}} * {{notes}}{{/notes}} * -{{#allParams}} * @param {{paramName}} {{description}} -{{/allParams}} * @return {{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} +{{#allParams}} * @param {{paramName}}{{^required}}{{#isPrimitiveType}}(nil){{/isPrimitiveType}}{{/required}} {{description}} +{{/allParams}} * @return {{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}{{/returnType}}{{^returnType}}nil{{/returnType}} */ -func (a {{{classname}}}) {{{nickname}}}({{#allParams}}{{paramName}} {{{dataType}}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}, {{/returnType}}*APIResponse, error) { +func (a {{{classname}}}) {{{nickname}}}({{#allParams}}{{paramName}} {{#required}}{{{dataType}}}{{/required}}{{^required}}{{#isPrimitiveType}}interface{}{{/isPrimitiveType}}{{^isPrimitiveType}}{{{dataType}}}{{/isPrimitiveType}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) ({{#returnType}}{{^isListContainer}}*{{/isListContainer}}{{{returnType}}}, {{/returnType}}*APIResponse, error) { var localVarHttpMethod = strings.ToUpper("{{httpMethod}}") // create path and map variables @@ -79,21 +79,30 @@ func (a {{{classname}}}) {{{nickname}}}({{#allParams}}{{paramName}} {{{dataType} for key := range a.Configuration.DefaultHeader { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + +{{#allParams}} +{{^required}} +{{#isPrimitiveType}} + if err := a.Configuration.APIClient.typeCheckParameter({{paramName}}, "{{{dataType}}}", "{{paramName}}"); err != nil { + return {{#returnType}}nil, {{/returnType}} nil, err + } +{{/isPrimitiveType}} +{{/required}} +{{/allParams}} {{#hasQueryParams}} {{#queryParams}} + {{^required}} + if {{paramName}} != nil { + {{/required}} {{#isListContainer}} - var collectionFormat = "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}" - if collectionFormat == "multi" { - for _, value := range {{paramName}} { - localVarQueryParams.Add("{{baseName}}", value) - } - } else { - localVarQueryParams.Add("{{baseName}}", a.Configuration.APIClient.ParameterToString({{paramName}}, collectionFormat)) - } + localVarQueryParams.Add("{{baseName}}", a.Configuration.APIClient.parameterToString({{paramName}}, "{{collectionFormat}}")) {{/isListContainer}} {{^isListContainer}} - localVarQueryParams.Add("{{baseName}}", a.Configuration.APIClient.ParameterToString({{paramName}}, "")) + localVarQueryParams.Add("{{baseName}}", a.Configuration.APIClient.parameterToString({{paramName}}, "")) {{/isListContainer}} + {{^required}} + } + {{/required}} {{/queryParams}} {{/hasQueryParams}} @@ -120,7 +129,7 @@ func (a {{{classname}}}) {{{nickname}}}({{#allParams}}{{paramName}} {{{dataType} {{#hasHeaderParams}} {{#headerParams}} // header params "{{baseName}}" - localVarHeaderParams["{{baseName}}"] = a.Configuration.APIClient.ParameterToString({{paramName}}, "") + localVarHeaderParams["{{baseName}}"] = a.Configuration.APIClient.parameterToString({{paramName}}, "") {{/headerParams}} {{/hasHeaderParams}} {{#hasFormParams}} @@ -131,7 +140,7 @@ func (a {{{classname}}}) {{{nickname}}}({{#allParams}}{{paramName}} {{{dataType} localVarFileName = file.Name() {{/isFile}} {{^isFile}} - localVarFormParams["{{paramName}}"] = a.Configuration.APIClient.ParameterToString({{paramName}}, "") + localVarFormParams["{{paramName}}"] = a.Configuration.APIClient.parameterToString({{paramName}}, "") {{/isFile}} {{/formParams}} {{/hasFormParams}} diff --git a/modules/swagger-codegen/src/main/resources/go/api_client.mustache b/modules/swagger-codegen/src/main/resources/go/api_client.mustache index a92c7631202..40703618dd2 100644 --- a/modules/swagger-codegen/src/main/resources/go/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/go/api_client.mustache @@ -8,6 +8,7 @@ import ( "reflect" "strings" "net/url" + "errors" "io/ioutil" "github.com/go-resty/resty" ) @@ -79,22 +80,38 @@ func (c *APIClient) CallAPI(path string, method string, return nil, fmt.Errorf("invalid method %v", method) } -func (c *APIClient) ParameterToString(obj interface{},collectionFormat string) string { - if reflect.TypeOf(obj).String() == "[]string" { - switch collectionFormat { - case "pipes": - return strings.Join(obj.([]string), "|") - case "ssv": - return strings.Join(obj.([]string), " ") - case "tsv": - return strings.Join(obj.([]string), "\t") - case "csv" : - return strings.Join(obj.([]string), ",") - } +func (c *APIClient) parameterToString(obj interface{}, collectionFormat string) string { + delimiter := "" + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") } return fmt.Sprintf("%v", obj) } +// Verify optional parameters are of the correct type. +func (c *APIClient) typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return errors.New(fmt.Sprintf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String())) + } + return nil +} func (c *APIClient) prepareClient() *resty.Client { diff --git a/samples/client/petstore/go/go-petstore/README.md b/samples/client/petstore/go/go-petstore/README.md index 164eaf91c07..248b6fdc8f8 100644 --- a/samples/client/petstore/go/go-petstore/README.md +++ b/samples/client/petstore/go/go-petstore/README.md @@ -24,6 +24,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**TestClientModel**](docs/FakeApi.md#testclientmodel) | **Patch** /fake | To test \"client\" model *FakeApi* | [**TestEndpointParameters**](docs/FakeApi.md#testendpointparameters) | **Post** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 *FakeApi* | [**TestEnumParameters**](docs/FakeApi.md#testenumparameters) | **Get** /fake | To test enum parameters +*Fake_classname_tags123Api* | [**TestClassname**](docs/Fake_classname_tags123Api.md#testclassname) | **Patch** /fake_classname_test | To test class name in snake case *PetApi* | [**AddPet**](docs/PetApi.md#addpet) | **Post** /pet | Add a new pet to the store *PetApi* | [**DeletePet**](docs/PetApi.md#deletepet) | **Delete** /pet/{petId} | Deletes a pet *PetApi* | [**FindPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **Get** /pet/findByStatus | Finds Pets by status diff --git a/samples/client/petstore/go/go-petstore/api_client.go b/samples/client/petstore/go/go-petstore/api_client.go index 6196eb5a706..50bdd3fc09e 100644 --- a/samples/client/petstore/go/go-petstore/api_client.go +++ b/samples/client/petstore/go/go-petstore/api_client.go @@ -29,7 +29,7 @@ import ( "reflect" "strings" "net/url" - "io/ioutil" + "errors" "github.com/go-resty/resty" ) @@ -100,22 +100,38 @@ func (c *APIClient) CallAPI(path string, method string, return nil, fmt.Errorf("invalid method %v", method) } -func (c *APIClient) ParameterToString(obj interface{},collectionFormat string) string { - if reflect.TypeOf(obj).String() == "[]string" { - switch collectionFormat { - case "pipes": - return strings.Join(obj.([]string), "|") - case "ssv": - return strings.Join(obj.([]string), " ") - case "tsv": - return strings.Join(obj.([]string), "\t") - case "csv" : - return strings.Join(obj.([]string), ",") - } +func (c *APIClient) parameterToString(obj interface{}, collectionFormat string) string { + delimiter := "" + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") } return fmt.Sprintf("%v", obj) } +// Verify optional parameters are of the correct type. +func (c *APIClient) typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return errors.New(fmt.Sprintf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String())) + } + return nil +} func (c *APIClient) prepareClient() *resty.Client { @@ -129,7 +145,7 @@ func (c *APIClient) prepareClient() *resty.Client { if c.config.Timeout != nil { rClient.SetTimeout(*c.config.Timeout) } - rClient.SetLogger(ioutil.Discard) + return rClient } diff --git a/samples/client/petstore/go/go-petstore/docs/FakeApi.md b/samples/client/petstore/go/go-petstore/docs/FakeApi.md index 63e7fb728fb..f3f9dbbf2d3 100644 --- a/samples/client/petstore/go/go-petstore/docs/FakeApi.md +++ b/samples/client/petstore/go/go-petstore/docs/FakeApi.md @@ -37,7 +37,7 @@ No authorization required [[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) # **TestEndpointParameters** -> TestEndpointParameters($number, $double, $patternWithoutDelimiter, $byte_, $integer, $int32_, $int64_, $float, $string_, $binary, $date, $dateTime, $password) +> TestEndpointParameters($number, $double, $patternWithoutDelimiter, $byte_, $integer, $int32_, $int64_, $float, $string_, $binary, $date, $dateTime, $password, $callback) Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -58,9 +58,10 @@ Name | Type | Description | Notes **float** | **float32**| None | [optional] **string_** | **string**| None | [optional] **binary** | **string**| None | [optional] - **date** | **time.Time**| None | [optional] - **dateTime** | **time.Time**| None | [optional] + **date** | [**time.Time**](.md)| None | [optional] + **dateTime** | [**time.Time**](.md)| None | [optional] **password** | **string**| None | [optional] + **callback** | **string**| None | [optional] ### Return type @@ -106,8 +107,8 @@ No authorization required ### HTTP request headers - - **Content-Type**: application/json - - **Accept**: application/json + - **Content-Type**: */* + - **Accept**: */* [[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) diff --git a/samples/client/petstore/go/go-petstore/docs/Fake_classname_tags123Api.md b/samples/client/petstore/go/go-petstore/docs/Fake_classname_tags123Api.md new file mode 100644 index 00000000000..bc70731a6d8 --- /dev/null +++ b/samples/client/petstore/go/go-petstore/docs/Fake_classname_tags123Api.md @@ -0,0 +1,36 @@ +# \Fake_classname_tags123Api + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**TestClassname**](Fake_classname_tags123Api.md#TestClassname) | **Patch** /fake_classname_test | To test class name in snake case + + +# **TestClassname** +> Client TestClassname($body) + +To test class name in snake case + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md)| client model | + +### Return type + +[**Client**](Client.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[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) + diff --git a/samples/client/petstore/go/go-petstore/fake_api.go b/samples/client/petstore/go/go-petstore/fake_api.go index f7cb65af821..23832f41fe0 100644 --- a/samples/client/petstore/go/go-petstore/fake_api.go +++ b/samples/client/petstore/go/go-petstore/fake_api.go @@ -52,7 +52,7 @@ func NewFakeApiWithBasePath(basePath string) *FakeApi { /** * To test \"client\" model * - * @param body client model + * @param body client model * @return *Client */ func (a FakeApi) TestClientModel(body Client) (*Client, *APIResponse, error) { @@ -72,6 +72,7 @@ func (a FakeApi) TestClientModel(body Client) (*Client, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/json", } @@ -114,22 +115,23 @@ func (a FakeApi) TestClientModel(body Client) (*Client, *APIResponse, error) { * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 * - * @param number None - * @param double None - * @param patternWithoutDelimiter None - * @param byte_ None - * @param integer None - * @param int32_ None - * @param int64_ None - * @param float None - * @param string_ None - * @param binary None - * @param date None - * @param dateTime None - * @param password None - * @return void + * @param number None + * @param double None + * @param patternWithoutDelimiter None + * @param byte_ None + * @param integer(nil) None + * @param int32_(nil) None + * @param int64_(nil) None + * @param float(nil) None + * @param string_(nil) None + * @param binary(nil) None + * @param date None + * @param dateTime None + * @param password(nil) None + * @param callback(nil) None + * @return nil */ -func (a FakeApi) TestEndpointParameters(number float32, double float64, patternWithoutDelimiter string, byte_ string, integer int32, int32_ int32, int64_ int64, float float32, string_ string, binary string, date time.Time, dateTime time.Time, password string) (*APIResponse, error) { +func (a FakeApi) TestEndpointParameters(number float32, double float64, patternWithoutDelimiter string, byte_ string, integer interface{}, int32_ interface{}, int64_ interface{}, float interface{}, string_ interface{}, binary interface{}, date time.Time, dateTime time.Time, password interface{}, callback interface{}) (*APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables @@ -151,6 +153,31 @@ func (a FakeApi) TestEndpointParameters(number float32, double float64, patternW localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + if err := a.Configuration.APIClient.typeCheckParameter(integer, "int32", "integer"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(int32_, "int32", "int32_"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(int64_, "int64", "int64_"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(float, "float32", "float"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(string_, "string", "string_"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(binary, "string", "binary"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(password, "string", "password"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(callback, "string", "callback"); err != nil { + return nil, err + } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/xml; charset=utf-8", "application/json; charset=utf-8", } @@ -170,19 +197,20 @@ func (a FakeApi) TestEndpointParameters(number float32, double float64, patternW if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } - localVarFormParams["integer"] = a.Configuration.APIClient.ParameterToString(integer, "") - localVarFormParams["int32_"] = a.Configuration.APIClient.ParameterToString(int32_, "") - localVarFormParams["int64_"] = a.Configuration.APIClient.ParameterToString(int64_, "") - localVarFormParams["number"] = a.Configuration.APIClient.ParameterToString(number, "") - localVarFormParams["float"] = a.Configuration.APIClient.ParameterToString(float, "") - localVarFormParams["double"] = a.Configuration.APIClient.ParameterToString(double, "") - localVarFormParams["string_"] = a.Configuration.APIClient.ParameterToString(string_, "") - localVarFormParams["patternWithoutDelimiter"] = a.Configuration.APIClient.ParameterToString(patternWithoutDelimiter, "") - localVarFormParams["byte_"] = a.Configuration.APIClient.ParameterToString(byte_, "") - localVarFormParams["binary"] = a.Configuration.APIClient.ParameterToString(binary, "") - localVarFormParams["date"] = a.Configuration.APIClient.ParameterToString(date, "") - localVarFormParams["dateTime"] = a.Configuration.APIClient.ParameterToString(dateTime, "") - localVarFormParams["password"] = a.Configuration.APIClient.ParameterToString(password, "") + localVarFormParams["integer"] = a.Configuration.APIClient.parameterToString(integer, "") + localVarFormParams["int32_"] = a.Configuration.APIClient.parameterToString(int32_, "") + localVarFormParams["int64_"] = a.Configuration.APIClient.parameterToString(int64_, "") + localVarFormParams["number"] = a.Configuration.APIClient.parameterToString(number, "") + localVarFormParams["float"] = a.Configuration.APIClient.parameterToString(float, "") + localVarFormParams["double"] = a.Configuration.APIClient.parameterToString(double, "") + localVarFormParams["string_"] = a.Configuration.APIClient.parameterToString(string_, "") + localVarFormParams["patternWithoutDelimiter"] = a.Configuration.APIClient.parameterToString(patternWithoutDelimiter, "") + localVarFormParams["byte_"] = a.Configuration.APIClient.parameterToString(byte_, "") + localVarFormParams["binary"] = a.Configuration.APIClient.parameterToString(binary, "") + localVarFormParams["date"] = a.Configuration.APIClient.parameterToString(date, "") + localVarFormParams["dateTime"] = a.Configuration.APIClient.parameterToString(dateTime, "") + localVarFormParams["password"] = a.Configuration.APIClient.parameterToString(password, "") + localVarFormParams["callback"] = a.Configuration.APIClient.parameterToString(callback, "") localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) var localVarURL, _ = url.Parse(localVarPath) @@ -202,17 +230,17 @@ func (a FakeApi) TestEndpointParameters(number float32, double float64, patternW /** * To test enum parameters * - * @param enumFormStringArray Form parameter enum test (string array) - * @param enumFormString Form parameter enum test (string) - * @param enumHeaderStringArray Header parameter enum test (string array) - * @param enumHeaderString Header parameter enum test (string) - * @param enumQueryStringArray Query parameter enum test (string array) - * @param enumQueryString Query parameter enum test (string) - * @param enumQueryInteger Query parameter enum test (double) - * @param enumQueryDouble Query parameter enum test (double) - * @return void + * @param enumFormStringArray Form parameter enum test (string array) + * @param enumFormString(nil) Form parameter enum test (string) + * @param enumHeaderStringArray Header parameter enum test (string array) + * @param enumHeaderString(nil) Header parameter enum test (string) + * @param enumQueryStringArray Query parameter enum test (string array) + * @param enumQueryString(nil) Query parameter enum test (string) + * @param enumQueryInteger(nil) Query parameter enum test (double) + * @param enumQueryDouble(nil) Query parameter enum test (double) + * @return nil */ -func (a FakeApi) TestEnumParameters(enumFormStringArray []string, enumFormString string, enumHeaderStringArray []string, enumHeaderString string, enumQueryStringArray []string, enumQueryString string, enumQueryInteger float32, enumQueryDouble float64) (*APIResponse, error) { +func (a FakeApi) TestEnumParameters(enumFormStringArray []string, enumFormString interface{}, enumHeaderStringArray []string, enumHeaderString interface{}, enumQueryStringArray []string, enumQueryString interface{}, enumQueryInteger interface{}, enumQueryDouble interface{}) (*APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Get") // create path and map variables @@ -228,19 +256,34 @@ func (a FakeApi) TestEnumParameters(enumFormStringArray []string, enumFormString for key := range a.Configuration.DefaultHeader { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } - var collectionFormat = "csv" - if collectionFormat == "multi" { - for _, value := range enumQueryStringArray { - localVarQueryParams.Add("enum_query_string_array", value) - } - } else { - localVarQueryParams.Add("enum_query_string_array", a.Configuration.APIClient.ParameterToString(enumQueryStringArray, collectionFormat)) + + if err := a.Configuration.APIClient.typeCheckParameter(enumFormString, "string", "enumFormString"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(enumHeaderString, "string", "enumHeaderString"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(enumQueryString, "string", "enumQueryString"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(enumQueryInteger, "float32", "enumQueryInteger"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(enumQueryDouble, "float64", "enumQueryDouble"); err != nil { + return nil, err + } + if enumQueryStringArray != nil { + localVarQueryParams.Add("enum_query_string_array", a.Configuration.APIClient.parameterToString(enumQueryStringArray, "csv")) + } + if enumQueryString != nil { + localVarQueryParams.Add("enum_query_string", a.Configuration.APIClient.parameterToString(enumQueryString, "")) + } + if enumQueryInteger != nil { + localVarQueryParams.Add("enum_query_integer", a.Configuration.APIClient.parameterToString(enumQueryInteger, "")) } - localVarQueryParams.Add("enum_query_string", a.Configuration.APIClient.ParameterToString(enumQueryString, "")) - localVarQueryParams.Add("enum_query_integer", a.Configuration.APIClient.ParameterToString(enumQueryInteger, "")) // to determine the Content-Type header - localVarHttpContentTypes := []string{ "application/json", } + localVarHttpContentTypes := []string{ "*/*", } // set Content-Type header localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) @@ -249,7 +292,7 @@ func (a FakeApi) TestEnumParameters(enumFormStringArray []string, enumFormString } // to determine the Accept header localVarHttpHeaderAccepts := []string{ - "application/json", + "*/*", } // set Accept header @@ -258,12 +301,12 @@ func (a FakeApi) TestEnumParameters(enumFormStringArray []string, enumFormString localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } // header params "enum_header_string_array" - localVarHeaderParams["enum_header_string_array"] = a.Configuration.APIClient.ParameterToString(enumHeaderStringArray, "") + localVarHeaderParams["enum_header_string_array"] = a.Configuration.APIClient.parameterToString(enumHeaderStringArray, "") // header params "enum_header_string" - localVarHeaderParams["enum_header_string"] = a.Configuration.APIClient.ParameterToString(enumHeaderString, "") - localVarFormParams["enumFormStringArray"] = a.Configuration.APIClient.ParameterToString(enumFormStringArray, "") - localVarFormParams["enumFormString"] = a.Configuration.APIClient.ParameterToString(enumFormString, "") - localVarFormParams["enumQueryDouble"] = a.Configuration.APIClient.ParameterToString(enumQueryDouble, "") + localVarHeaderParams["enum_header_string"] = a.Configuration.APIClient.parameterToString(enumHeaderString, "") + localVarFormParams["enumFormStringArray"] = a.Configuration.APIClient.parameterToString(enumFormStringArray, "") + localVarFormParams["enumFormString"] = a.Configuration.APIClient.parameterToString(enumFormString, "") + localVarFormParams["enumQueryDouble"] = a.Configuration.APIClient.parameterToString(enumQueryDouble, "") localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) var localVarURL, _ = url.Parse(localVarPath) diff --git a/samples/client/petstore/go/go-petstore/fake_classname_tags123_api.go b/samples/client/petstore/go/go-petstore/fake_classname_tags123_api.go new file mode 100644 index 00000000000..d19addf4c8e --- /dev/null +++ b/samples/client/petstore/go/go-petstore/fake_classname_tags123_api.go @@ -0,0 +1,112 @@ +/* + * Swagger 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: \" \\ + * + * OpenAPI spec version: 1.0.0 + * Contact: apiteam@swagger.io + * Generated by: https://github.com/swagger-api/swagger-codegen.git + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package petstore + +import ( + "net/url" + "strings" + "encoding/json" +) + +type Fake_classname_tags123Api struct { + Configuration *Configuration +} + +func NewFake_classname_tags123Api() *Fake_classname_tags123Api { + configuration := NewConfiguration() + return &Fake_classname_tags123Api{ + Configuration: configuration, + } +} + +func NewFake_classname_tags123ApiWithBasePath(basePath string) *Fake_classname_tags123Api { + configuration := NewConfiguration() + configuration.BasePath = basePath + + return &Fake_classname_tags123Api{ + Configuration: configuration, + } +} + +/** + * To test class name in snake case + * + * @param body client model + * @return *Client + */ +func (a Fake_classname_tags123Api) TestClassname(body Client) (*Client, *APIResponse, error) { + + var localVarHttpMethod = strings.ToUpper("Patch") + // create path and map variables + localVarPath := a.Configuration.BasePath + "/fake_classname_test" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := make(map[string]string) + var localVarPostBody interface{} + var localVarFileName string + var localVarFileBytes []byte + // add default headers if any + for key := range a.Configuration.DefaultHeader { + localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] + } + + + // to determine the Content-Type header + localVarHttpContentTypes := []string{ "application/json", } + + // set Content-Type header + localVarHttpContentType := a.Configuration.APIClient.SelectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + // to determine the Accept header + localVarHttpHeaderAccepts := []string{ + "application/json", + } + + // set Accept header + localVarHttpHeaderAccept := a.Configuration.APIClient.SelectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + var successPayload = new(Client) + localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + + var localVarURL, _ = url.Parse(localVarPath) + localVarURL.RawQuery = localVarQueryParams.Encode() + var localVarAPIResponse = &APIResponse{Operation: "TestClassname", Method: localVarHttpMethod, RequestURL: localVarURL.String()} + if localVarHttpResponse != nil { + localVarAPIResponse.Response = localVarHttpResponse.RawResponse + localVarAPIResponse.Payload = localVarHttpResponse.Body() + } + + if err != nil { + return successPayload, localVarAPIResponse, err + } + err = json.Unmarshal(localVarHttpResponse.Body(), &successPayload) + return successPayload, localVarAPIResponse, err +} + diff --git a/samples/client/petstore/go/go-petstore/pet_api.go b/samples/client/petstore/go/go-petstore/pet_api.go index bb89aea874d..69feac10651 100644 --- a/samples/client/petstore/go/go-petstore/pet_api.go +++ b/samples/client/petstore/go/go-petstore/pet_api.go @@ -55,8 +55,8 @@ func NewPetApiWithBasePath(basePath string) *PetApi { * Add a new pet to the store * * - * @param body Pet object that needs to be added to the store - * @return void + * @param body Pet object that needs to be added to the store + * @return nil */ func (a PetApi) AddPet(body Pet) (*APIResponse, error) { @@ -80,6 +80,7 @@ func (a PetApi) AddPet(body Pet) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/json", "application/xml", } @@ -121,11 +122,11 @@ func (a PetApi) AddPet(body Pet) (*APIResponse, error) { * Deletes a pet * * - * @param petId Pet id to delete - * @param apiKey - * @return void + * @param petId Pet id to delete + * @param apiKey(nil) + * @return nil */ -func (a PetApi) DeletePet(petId int64, apiKey string) (*APIResponse, error) { +func (a PetApi) DeletePet(petId int64, apiKey interface{}) (*APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Delete") // create path and map variables @@ -148,6 +149,10 @@ func (a PetApi) DeletePet(petId int64, apiKey string) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + if err := a.Configuration.APIClient.typeCheckParameter(apiKey, "string", "apiKey"); err != nil { + return nil, err + } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -168,7 +173,7 @@ func (a PetApi) DeletePet(petId int64, apiKey string) (*APIResponse, error) { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } // header params "api_key" - localVarHeaderParams["api_key"] = a.Configuration.APIClient.ParameterToString(apiKey, "") + localVarHeaderParams["api_key"] = a.Configuration.APIClient.parameterToString(apiKey, "") localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) var localVarURL, _ = url.Parse(localVarPath) @@ -189,7 +194,7 @@ func (a PetApi) DeletePet(petId int64, apiKey string) (*APIResponse, error) { * Finds Pets by status * Multiple status values can be provided with comma separated strings * - * @param status Status values that need to be considered for filter + * @param status Status values that need to be considered for filter * @return []Pet */ func (a PetApi) FindPetsByStatus(status []string) ([]Pet, *APIResponse, error) { @@ -213,14 +218,8 @@ func (a PetApi) FindPetsByStatus(status []string) ([]Pet, *APIResponse, error) { for key := range a.Configuration.DefaultHeader { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } - var collectionFormat = "csv" - if collectionFormat == "multi" { - for _, value := range status { - localVarQueryParams.Add("status", value) - } - } else { - localVarQueryParams.Add("status", a.Configuration.APIClient.ParameterToString(status, collectionFormat)) - } + + localVarQueryParams.Add("status", a.Configuration.APIClient.parameterToString(status, "csv")) // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -263,7 +262,7 @@ func (a PetApi) FindPetsByStatus(status []string) ([]Pet, *APIResponse, error) { * Finds Pets by tags * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * - * @param tags Tags to filter by + * @param tags Tags to filter by * @return []Pet */ func (a PetApi) FindPetsByTags(tags []string) ([]Pet, *APIResponse, error) { @@ -287,14 +286,8 @@ func (a PetApi) FindPetsByTags(tags []string) ([]Pet, *APIResponse, error) { for key := range a.Configuration.DefaultHeader { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } - var collectionFormat = "csv" - if collectionFormat == "multi" { - for _, value := range tags { - localVarQueryParams.Add("tags", value) - } - } else { - localVarQueryParams.Add("tags", a.Configuration.APIClient.ParameterToString(tags, collectionFormat)) - } + + localVarQueryParams.Add("tags", a.Configuration.APIClient.parameterToString(tags, "csv")) // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -337,7 +330,7 @@ func (a PetApi) FindPetsByTags(tags []string) ([]Pet, *APIResponse, error) { * Find pet by ID * Returns a single pet * - * @param petId ID of pet to return + * @param petId ID of pet to return * @return *Pet */ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { @@ -361,6 +354,7 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -402,8 +396,8 @@ func (a PetApi) GetPetById(petId int64) (*Pet, *APIResponse, error) { * Update an existing pet * * - * @param body Pet object that needs to be added to the store - * @return void + * @param body Pet object that needs to be added to the store + * @return nil */ func (a PetApi) UpdatePet(body Pet) (*APIResponse, error) { @@ -427,6 +421,7 @@ func (a PetApi) UpdatePet(body Pet) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/json", "application/xml", } @@ -468,12 +463,12 @@ func (a PetApi) UpdatePet(body Pet) (*APIResponse, error) { * Updates a pet in the store with form data * * - * @param petId ID of pet that needs to be updated - * @param name Updated name of the pet - * @param status Updated status of the pet - * @return void + * @param petId ID of pet that needs to be updated + * @param name(nil) Updated name of the pet + * @param status(nil) Updated status of the pet + * @return nil */ -func (a PetApi) UpdatePetWithForm(petId int64, name string, status string) (*APIResponse, error) { +func (a PetApi) UpdatePetWithForm(petId int64, name interface{}, status interface{}) (*APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables @@ -496,6 +491,13 @@ func (a PetApi) UpdatePetWithForm(petId int64, name string, status string) (*API localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + if err := a.Configuration.APIClient.typeCheckParameter(name, "string", "name"); err != nil { + return nil, err + } + if err := a.Configuration.APIClient.typeCheckParameter(status, "string", "status"); err != nil { + return nil, err + } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/x-www-form-urlencoded", } @@ -515,8 +517,8 @@ func (a PetApi) UpdatePetWithForm(petId int64, name string, status string) (*API if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } - localVarFormParams["name"] = a.Configuration.APIClient.ParameterToString(name, "") - localVarFormParams["status"] = a.Configuration.APIClient.ParameterToString(status, "") + localVarFormParams["name"] = a.Configuration.APIClient.parameterToString(name, "") + localVarFormParams["status"] = a.Configuration.APIClient.parameterToString(status, "") localVarHttpResponse, err := a.Configuration.APIClient.CallAPI(localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) var localVarURL, _ = url.Parse(localVarPath) @@ -537,12 +539,12 @@ func (a PetApi) UpdatePetWithForm(petId int64, name string, status string) (*API * uploads an image * * - * @param petId ID of pet to update - * @param additionalMetadata Additional data to pass to server - * @param file file to upload + * @param petId ID of pet to update + * @param additionalMetadata(nil) Additional data to pass to server + * @param file file to upload * @return *ModelApiResponse */ -func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File) (*ModelApiResponse, *APIResponse, error) { +func (a PetApi) UploadFile(petId int64, additionalMetadata interface{}, file *os.File) (*ModelApiResponse, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables @@ -565,6 +567,10 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + if err := a.Configuration.APIClient.typeCheckParameter(additionalMetadata, "string", "additionalMetadata"); err != nil { + return nil, nil, err + } + // to determine the Content-Type header localVarHttpContentTypes := []string{ "multipart/form-data", } @@ -583,7 +589,7 @@ func (a PetApi) UploadFile(petId int64, additionalMetadata string, file *os.File if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } - localVarFormParams["additionalMetadata"] = a.Configuration.APIClient.ParameterToString(additionalMetadata, "") + localVarFormParams["additionalMetadata"] = a.Configuration.APIClient.parameterToString(additionalMetadata, "") fbs, _ := ioutil.ReadAll(file) localVarFileBytes = fbs localVarFileName = file.Name() diff --git a/samples/client/petstore/go/go-petstore/store_api.go b/samples/client/petstore/go/go-petstore/store_api.go index 384fb351823..b63f527a34f 100644 --- a/samples/client/petstore/go/go-petstore/store_api.go +++ b/samples/client/petstore/go/go-petstore/store_api.go @@ -53,8 +53,8 @@ func NewStoreApiWithBasePath(basePath string) *StoreApi { * Delete purchase order by ID * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * - * @param orderId ID of the order that needs to be deleted - * @return void + * @param orderId ID of the order that needs to be deleted + * @return nil */ func (a StoreApi) DeleteOrder(orderId string) (*APIResponse, error) { @@ -74,6 +74,7 @@ func (a StoreApi) DeleteOrder(orderId string) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -135,6 +136,7 @@ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -175,7 +177,7 @@ func (a StoreApi) GetInventory() (*map[string]int32, *APIResponse, error) { * Find purchase order by ID * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * - * @param orderId ID of pet that needs to be fetched + * @param orderId ID of pet that needs to be fetched * @return *Order */ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { @@ -196,6 +198,7 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -237,7 +240,7 @@ func (a StoreApi) GetOrderById(orderId int64) (*Order, *APIResponse, error) { * Place an order for a pet * * - * @param body order placed for purchasing the pet + * @param body order placed for purchasing the pet * @return *Order */ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { @@ -257,6 +260,7 @@ func (a StoreApi) PlaceOrder(body Order) (*Order, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } diff --git a/samples/client/petstore/go/go-petstore/user_api.go b/samples/client/petstore/go/go-petstore/user_api.go index 9ec01dd7b64..42971f81883 100644 --- a/samples/client/petstore/go/go-petstore/user_api.go +++ b/samples/client/petstore/go/go-petstore/user_api.go @@ -53,8 +53,8 @@ func NewUserApiWithBasePath(basePath string) *UserApi { * Create user * This can only be done by the logged in user. * - * @param body Created user object - * @return void + * @param body Created user object + * @return nil */ func (a UserApi) CreateUser(body User) (*APIResponse, error) { @@ -73,6 +73,7 @@ func (a UserApi) CreateUser(body User) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -114,8 +115,8 @@ func (a UserApi) CreateUser(body User) (*APIResponse, error) { * Creates list of users with given input array * * - * @param body List of user object - * @return void + * @param body List of user object + * @return nil */ func (a UserApi) CreateUsersWithArrayInput(body []User) (*APIResponse, error) { @@ -134,6 +135,7 @@ func (a UserApi) CreateUsersWithArrayInput(body []User) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -175,8 +177,8 @@ func (a UserApi) CreateUsersWithArrayInput(body []User) (*APIResponse, error) { * Creates list of users with given input array * * - * @param body List of user object - * @return void + * @param body List of user object + * @return nil */ func (a UserApi) CreateUsersWithListInput(body []User) (*APIResponse, error) { @@ -195,6 +197,7 @@ func (a UserApi) CreateUsersWithListInput(body []User) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -236,8 +239,8 @@ func (a UserApi) CreateUsersWithListInput(body []User) (*APIResponse, error) { * Delete user * This can only be done by the logged in user. * - * @param username The name that needs to be deleted - * @return void + * @param username The name that needs to be deleted + * @return nil */ func (a UserApi) DeleteUser(username string) (*APIResponse, error) { @@ -257,6 +260,7 @@ func (a UserApi) DeleteUser(username string) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -296,7 +300,7 @@ func (a UserApi) DeleteUser(username string) (*APIResponse, error) { * Get user by user name * * - * @param username The name that needs to be fetched. Use user1 for testing. + * @param username The name that needs to be fetched. Use user1 for testing. * @return *User */ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { @@ -317,6 +321,7 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -358,8 +363,8 @@ func (a UserApi) GetUserByName(username string) (*User, *APIResponse, error) { * Logs user into the system * * - * @param username The user name for login - * @param password The password for login in clear text + * @param username The user name for login + * @param password The password for login in clear text * @return *string */ func (a UserApi) LoginUser(username string, password string) (*string, *APIResponse, error) { @@ -378,8 +383,9 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo for key := range a.Configuration.DefaultHeader { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } - localVarQueryParams.Add("username", a.Configuration.APIClient.ParameterToString(username, "")) - localVarQueryParams.Add("password", a.Configuration.APIClient.ParameterToString(password, "")) + + localVarQueryParams.Add("username", a.Configuration.APIClient.parameterToString(username, "")) + localVarQueryParams.Add("password", a.Configuration.APIClient.parameterToString(password, "")) // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -422,7 +428,7 @@ func (a UserApi) LoginUser(username string, password string) (*string, *APIRespo * Logs out current logged in user session * * - * @return void + * @return nil */ func (a UserApi) LogoutUser() (*APIResponse, error) { @@ -441,6 +447,7 @@ func (a UserApi) LogoutUser() (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ } @@ -480,9 +487,9 @@ func (a UserApi) LogoutUser() (*APIResponse, error) { * Updated user * This can only be done by the logged in user. * - * @param username name that need to be deleted - * @param body Updated user object - * @return void + * @param username name that need to be deleted + * @param body Updated user object + * @return nil */ func (a UserApi) UpdateUser(username string, body User) (*APIResponse, error) { @@ -502,6 +509,7 @@ func (a UserApi) UpdateUser(username string, body User) (*APIResponse, error) { localVarHeaderParams[key] = a.Configuration.DefaultHeader[key] } + // to determine the Content-Type header localVarHttpContentTypes := []string{ }