diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index b853cbc9c95..eb85a10a203 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -29,6 +29,8 @@ from six import iteritems from ..util import remove_none +from ..swagger import ApiClient + {{#operations}} class {{classname}}(object): @@ -68,11 +70,13 @@ class {{classname}}(object): files = remove_none(dict({{#formParams}}{{#isFile}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/isFile}}{{/formParams}})) body_params = {{#bodyParam}}params.get('{{paramName}}'){{/bodyParam}}{{^bodyParam}}None{{/bodyParam}} + # HTTP header `Accept` accepts = [{{#produces}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/produces}}] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [{{#consumes}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/consumes}}] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, diff --git a/modules/swagger-codegen/src/main/resources/python/swagger.mustache b/modules/swagger-codegen/src/main/resources/python/swagger.mustache index 549106014e3..7b284376a58 100644 --- a/modules/swagger-codegen/src/main/resources/python/swagger.mustache +++ b/modules/swagger-codegen/src/main/resources/python/swagger.mustache @@ -253,7 +253,28 @@ class ApiClient(object): return params - - + @staticmethod + def select_header_accept(accepts): + """ + Return `Accept` based on an array of accepts provided + """ + if not accepts: + return 'application/json' + if 'application/json'.lower() in accepts: + return 'application/json' + else: + return ', '.join(accepts) + + @staticmethod + def select_header_content_type(content_types): + """ + Return `Content-Type` baseed on an array of content_types provided + """ + if not content_types: + return 'application/json' + if 'application/json'.lower() in content_types: + return 'application/json' + else: + return content_types[0] diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py index bf8a51d7ca2..b06447c8c47 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py @@ -29,6 +29,8 @@ from six import iteritems from ..util import remove_none +from ..swagger import ApiClient + class PetApi(object): def __init__(self, api_client): @@ -63,11 +65,13 @@ class PetApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = ['application/json', 'application/xml'] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -102,11 +106,13 @@ class PetApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = ['application/json', 'application/xml'] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -141,11 +147,13 @@ class PetApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -182,11 +190,13 @@ class PetApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -227,11 +237,18 @@ class PetApi(object): files = remove_none(dict()) body_params = None - accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + # HTTP header `Accept` + accepts = [] + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) + + print('-----------------------------') + print('header_params: ', header_params) + print('-----------------------------') + return response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -274,11 +291,13 @@ class PetApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = ['application/x-www-form-urlencoded'] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -318,11 +337,13 @@ class PetApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -363,11 +384,13 @@ class PetApi(object): files = remove_none(dict(file=params.get('file'))) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = ['multipart/form-data'] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py index 0df9a84fe75..19ece346938 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py @@ -29,6 +29,8 @@ from six import iteritems from ..util import remove_none +from ..swagger import ApiClient + class StoreApi(object): def __init__(self, api_client): @@ -62,11 +64,13 @@ class StoreApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -103,11 +107,13 @@ class StoreApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -148,11 +154,13 @@ class StoreApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -193,11 +201,13 @@ class StoreApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py index 720843bd508..a705567306a 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py @@ -29,6 +29,8 @@ from six import iteritems from ..util import remove_none +from ..swagger import ApiClient + class UserApi(object): def __init__(self, api_client): @@ -63,11 +65,13 @@ class UserApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -102,11 +106,13 @@ class UserApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -141,11 +147,13 @@ class UserApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -181,11 +189,13 @@ class UserApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -221,11 +231,13 @@ class UserApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -264,11 +276,13 @@ class UserApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -310,11 +324,13 @@ class UserApi(object): files = remove_none(dict()) body_params = params.get('body') + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, @@ -353,11 +369,13 @@ class UserApi(object): files = remove_none(dict()) body_params = None + # HTTP header `Accept` accepts = ['application/json', 'application/xml'] - header_params['Accept'] = ', '.join(accepts) + header_params['Accept'] = ApiClient.select_header_accept(accepts) + # HTTP header `Content-Type` content_types = [] - header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json' + header_params['Content-Type'] = ApiClient.select_header_content_type(content_types) response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/swagger.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/swagger.py index 549106014e3..7b284376a58 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/swagger.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/swagger.py @@ -253,7 +253,28 @@ class ApiClient(object): return params - - + @staticmethod + def select_header_accept(accepts): + """ + Return `Accept` based on an array of accepts provided + """ + if not accepts: + return 'application/json' + if 'application/json'.lower() in accepts: + return 'application/json' + else: + return ', '.join(accepts) + + @staticmethod + def select_header_content_type(content_types): + """ + Return `Content-Type` baseed on an array of content_types provided + """ + if not content_types: + return 'application/json' + if 'application/json'.lower() in content_types: + return 'application/json' + else: + return content_types[0]