diff --git a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache index e797d0ae7a4d..f2099c753125 100644 --- a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache @@ -65,16 +65,13 @@ class RESTClientObject(object): ssl=ssl_context ) + self.proxy = configuration.proxy + self.proxy_headers = configuration.proxy_headers + # https pool manager - if configuration.proxy: - self.pool_manager = aiohttp.ClientSession( - connector=connector, - proxy=configuration.proxy - ) - else: - self.pool_manager = aiohttp.ClientSession( - connector=connector - ) + self.pool_manager = aiohttp.ClientSession( + connector=connector + ) async def close(self): await self.pool_manager.close() @@ -122,6 +119,11 @@ class RESTClientObject(object): "headers": headers } + if self.proxy: + args["proxy"] = self.proxy + if self.proxy_headers: + args["proxy_headers"] = self.proxy_headers + if query_params: args["url"] += '?' + urlencode(query_params) diff --git a/samples/client/petstore/python-asyncio/petstore_api/rest.py b/samples/client/petstore/python-asyncio/petstore_api/rest.py index 37616f185367..1394af356ba2 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/rest.py +++ b/samples/client/petstore/python-asyncio/petstore_api/rest.py @@ -73,16 +73,13 @@ def __init__(self, configuration, pools_size=4, maxsize=None): ssl=ssl_context ) + self.proxy = configuration.proxy + self.proxy_headers = configuration.proxy_headers + # https pool manager - if configuration.proxy: - self.pool_manager = aiohttp.ClientSession( - connector=connector, - proxy=configuration.proxy - ) - else: - self.pool_manager = aiohttp.ClientSession( - connector=connector - ) + self.pool_manager = aiohttp.ClientSession( + connector=connector + ) async def close(self): await self.pool_manager.close() @@ -130,6 +127,11 @@ async def request(self, method, url, query_params=None, headers=None, "headers": headers } + if self.proxy: + args["proxy"] = self.proxy + if self.proxy_headers: + args["proxy_headers"] = self.proxy_headers + if query_params: args["url"] += '?' + urlencode(query_params) diff --git a/samples/client/petstore/python-asyncio/tests/test_pet_api.py b/samples/client/petstore/python-asyncio/tests/test_pet_api.py index d37b2e091305..09d48581a400 100644 --- a/samples/client/petstore/python-asyncio/tests/test_pet_api.py +++ b/samples/client/petstore/python-asyncio/tests/test_pet_api.py @@ -192,6 +192,19 @@ async def test_delete_pet(self): except ApiException as e: self.assertEqual(404, e.status) + @async_test + async def test_proxy(self): + config = Configuration() + # set not-existent proxy and catch an error to verify that + # the client library (aiohttp) tried to use it. + config.proxy = 'http://localhost:8080/proxy' + async with petstore_api.ApiClient(config) as client: + pet_api = petstore_api.PetApi(client) + + with self.assertRaisesRegex(petstore_api.rest.aiohttp.client_exceptions.ClientProxyConnectionError, + 'Cannot connect to host localhost:8080'): + await pet_api.get_pet_by_id(self.pet.id) + if __name__ == '__main__': import logging