diff options
author | Heiner Lohaus <hlohaus@users.noreply.github.com> | 2024-01-27 02:00:44 +0100 |
---|---|---|
committer | Heiner Lohaus <hlohaus@users.noreply.github.com> | 2024-01-27 02:00:44 +0100 |
commit | 47b50b4827121ec68d9e52a018b631a4a3f09625 (patch) | |
tree | d4d9d2040f8588634413be86d7e24b914fa6e29c /g4f/requests_aiohttp.py | |
parent | Fix: ChromeDriver only supports characters in the BMP (diff) | |
download | gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar.gz gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar.bz2 gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar.lz gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar.xz gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.tar.zst gpt4free-47b50b4827121ec68d9e52a018b631a4a3f09625.zip |
Diffstat (limited to 'g4f/requests_aiohttp.py')
-rw-r--r-- | g4f/requests_aiohttp.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/g4f/requests_aiohttp.py b/g4f/requests_aiohttp.py new file mode 100644 index 00000000..aa097312 --- /dev/null +++ b/g4f/requests_aiohttp.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +from aiohttp import ClientSession, ClientResponse, ClientTimeout +from typing import AsyncGenerator, Any + +from .Provider.helper import get_connector + +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 = { + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'en-US', + 'Connection': 'keep-alive', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'same-site', + "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36', + 'Accept': '*/*', + 'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not?A_Brand";v="24"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Windows"', + **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 |