except asyncio.TimeoutError:
raise ConnectTimeout()
- async def send(self, request: Request, stream: bool = False) -> Response:
+ async def send(self, request: Request) -> Response:
method = request.method.encode()
target = request.url.target
headers = request.headers
assert isinstance(event, h11.Response)
status_code = event.status_code
headers = event.headers
-
- if stream:
- body_iter = self.body_iter()
- return Response(status_code=status_code, headers=headers, body=body_iter)
-
- # Get the response body.
- body = b""
- event = await self._receive_event()
- while isinstance(event, h11.Data):
- body += event.data
- event = await self._receive_event()
- assert isinstance(event, h11.EndOfMessage)
- await self.close()
-
- return Response(status_code=status_code, headers=headers, body=body)
+ body = self.body_iter()
+ return Response(
+ status_code=status_code, headers=headers, body=body, on_close=self.close
+ )
async def body_iter(self) -> typing.AsyncIterator[bytes]:
event = await self._receive_event()
request = Request(method, parsed_url, headers=headers, body=body)
ssl_context = await self.get_ssl_context(parsed_url)
connection = await self.acquire_connection(parsed_url, ssl=ssl_context)
- response = await connection.send(request, stream=stream)
+ response = await connection.send(request)
+ if not stream:
+ try:
+ await response.read()
+ finally:
+ await response.close()
return response
async def acquire_connection(
author_email="tom@tomchristie.com",
packages=get_packages("httpcore"),
data_files=[("", ["LICENSE.md"])],
- install_requires=["h11"],
+ install_requires=["h11", "certifi"],
classifiers=[
"Development Status :: 3 - Alpha",
"Environment :: Web Environment",