add cookies support for forward driver

This commit is contained in:
Ju4tCode
2022-12-20 10:13:45 +00:00
committed by GitHub
parent 827d8fbc0e
commit 2d08465426
7 changed files with 53 additions and 32 deletions

View File

@ -56,7 +56,13 @@ class Mixin(ForwardMixin):
files = aiohttp.FormData()
for name, file in setup.files:
files.add_field(name, file[1], content_type=file[2], filename=file[0])
async with aiohttp.ClientSession(version=version, trust_env=True) as session:
cookies = {
cookie.name: cookie.value for cookie in setup.cookies if cookie.value
}
async with aiohttp.ClientSession(
cookies=cookies, version=version, trust_env=True
) as session:
async with session.request(
setup.method,
setup.url,
@ -66,13 +72,12 @@ class Mixin(ForwardMixin):
timeout=timeout,
proxy=setup.proxy,
) as response:
res = Response(
return Response(
response.status,
headers=response.headers.copy(),
content=await response.read(),
request=setup,
)
return res
@overrides(ForwardMixin)
@asynccontextmanager
@ -92,8 +97,7 @@ class Mixin(ForwardMixin):
headers=setup.headers,
proxy=setup.proxy,
) as ws:
websocket = WebSocket(request=setup, session=session, websocket=ws)
yield websocket
yield WebSocket(request=setup, session=session, websocket=ws)
class WebSocket(BaseWebSocket):

View File

@ -48,17 +48,18 @@ class Mixin(ForwardMixin):
@overrides(ForwardMixin)
async def request(self, setup: Request) -> Response:
async with httpx.AsyncClient(
cookies=setup.cookies.jar,
http2=setup.version == HTTPVersion.H2,
proxies=setup.proxy, # type: ignore
proxies=setup.proxy,
follow_redirects=True,
) as client:
response = await client.request(
setup.method,
str(setup.url),
content=setup.content, # type: ignore
data=setup.data, # type: ignore
content=setup.content,
data=setup.data,
json=setup.json,
files=setup.files, # type: ignore
files=setup.files,
headers=tuple(setup.headers.items()),
timeout=setup.timeout,
)

View File

@ -70,7 +70,7 @@ class Mixin(ForwardMixin):
async def websocket(self, setup: Request) -> AsyncGenerator["WebSocket", None]:
connection = Connect(
str(setup.url),
extra_headers=setup.headers.items(),
extra_headers={**setup.headers, **setup.cookies.as_header(setup)},
open_timeout=setup.timeout,
)
async with connection as ws:
@ -101,8 +101,7 @@ class WebSocket(BaseWebSocket):
@overrides(BaseWebSocket)
@catch_closed
async def receive(self) -> Union[str, bytes]:
msg = await self.websocket.recv()
return msg
return await self.websocket.recv()
@overrides(BaseWebSocket)
@catch_closed