diff options
Diffstat (limited to 'g4f/requests/aiohttp.py')
-rw-r--r-- | g4f/requests/aiohttp.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/g4f/requests/aiohttp.py b/g4f/requests/aiohttp.py new file mode 100644 index 00000000..d9bd6541 --- /dev/null +++ b/g4f/requests/aiohttp.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from aiohttp import ClientSession, ClientResponse, ClientTimeout +from typing import AsyncGenerator, Any + +from ..providers.helper import get_connector +from .defaults import DEFAULT_HEADERS + +class StreamResponse(ClientResponse): + async def iter_lines(self) -> AsyncGenerator[bytes, None]: + async for line in self.content: + yield line.rstrip(b"\r\n") + + async def json(self) -> Any: + return await super().json(content_type=None) + +class StreamSession(ClientSession): + def __init__(self, headers: dict = {}, timeout: int = None, proxies: dict = {}, impersonate = None, **kwargs): + if impersonate: + headers = { + **DEFAULT_HEADERS, + **headers + } + super().__init__( + **kwargs, + timeout=ClientTimeout(timeout) if timeout else None, + response_class=StreamResponse, + connector=get_connector(kwargs.get("connector"), proxies.get("https")), + headers=headers + )
\ No newline at end of file |