[python/asyncio] fix passing proxy parameters to aiohttp (#5943)

This commit is contained in:
Tomasz Prus 2020-04-16 03:16:08 +02:00 committed by GitHub
parent 91cfabdad2
commit 7a0242311f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 18 deletions

View File

@ -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)

View File

@ -73,16 +73,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()
@ -130,6 +127,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)

View File

@ -192,6 +192,19 @@ class TestPetApiTests(unittest.TestCase):
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