diff options
Diffstat (limited to 'ATRI/utils/request.py')
-rw-r--r-- | ATRI/utils/request.py | 86 |
1 files changed, 54 insertions, 32 deletions
diff --git a/ATRI/utils/request.py b/ATRI/utils/request.py index d16c17b..c638d63 100644 --- a/ATRI/utils/request.py +++ b/ATRI/utils/request.py @@ -1,32 +1,54 @@ -from typing import Optional -from aiohttp import ClientSession - - -async def get_text(url: str, headers: Optional[dict] = None) -> str: - async with ClientSession() as session: - async with session.get(url, headers=headers) as r: - result = await r.text() - return result - - -async def get_bytes(url: str, headers: Optional[dict] = None) -> bytes: - async with ClientSession() as session: - async with session.get(url, headers=headers) as r: - result = await r.read() - return result - - -async def get_content(url: str, headers: Optional[dict] = None): - async with ClientSession() as session: - async with session.get(url, headers=headers) as r: - result = await r.content.read() - return result - - -async def post_bytes( - url: str, params: Optional[dict] = None, json: Optional[dict] = None -) -> bytes: - async with ClientSession() as session: - async with session.post(url, params=params, json=json) as r: - result = await r.read() - return result +from aiohttp import ClientSession, ClientResponse + + +class Response: + + def __init__(self, response: ClientResponse) -> None: + self.raw_response = response + + @property + def status(self) -> int: + return self.raw_response.status + + @property + def url(self): + return self.raw_response.url + + @property + def real_url(self): + return self.raw_response.real_url + + @property + def host(self): + return self.raw_response.host + + @property + def headers(self): + return self.raw_response.headers + + @property + def raw_headers(self): + return self.raw_response.raw_headers + + @property + def request_info(self): + return self.raw_response.request_info + + @property + async def read(self): + return await self.raw_response.read() + + @property + async def text(self): + return await self.raw_response.text() + + async def json(self): + return await self.raw_response.json() + + +async def get(url, params: dict = None, **kwargs) -> Response: + return Response(await ClientSession().get(url=url, params=params, **kwargs)) + + +async def post(url, data: dict = None, **kwargs) -> Response: + return Response(await ClientSession().post(url=url, data=data, **kwargs)) |