diff options
author | Noah <mounderfod@gmail.com> | 2022-07-09 13:11:20 +0100 |
---|---|---|
committer | Noah <mounderfod@gmail.com> | 2022-07-09 13:11:20 +0100 |
commit | ae8e010b3735761156ac01307bf90520ab3f385d (patch) | |
tree | 7082bcf4dff37a84b19b4b2e5d31696b8770a680 /discord/utils | |
parent | a72d0da957af970c1608061d5dcfbf4df3975ffd (diff) | |
download | discobra-ae8e010b3735761156ac01307bf90520ab3f385d.tar.gz |
feat(http): Add basic API for sending HTTP requests
Also added some new stuff to `User` since it has changed since it was last used.
Diffstat (limited to 'discord/utils')
-rw-r--r-- | discord/utils/exceptions.py | 3 | ||||
-rw-r--r-- | discord/utils/rest.py | 60 |
2 files changed, 63 insertions, 0 deletions
diff --git a/discord/utils/exceptions.py b/discord/utils/exceptions.py new file mode 100644 index 0000000..a7f035c --- /dev/null +++ b/discord/utils/exceptions.py @@ -0,0 +1,3 @@ +class APIException(Exception): + """Raised when the Discord API returns an error.""" + diff --git a/discord/utils/rest.py b/discord/utils/rest.py new file mode 100644 index 0000000..f7f6ab8 --- /dev/null +++ b/discord/utils/rest.py @@ -0,0 +1,60 @@ +import aiohttp +import asyncio + +from discord.utils.exceptions import APIException + + +async def get(token, url): + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bot {token}", + "User-Agent": f"DiscordBot (https://github.com/mounderfod/discobra 0.0.1)" + }) as session: + async with session.get(url='https://discord.com/api/v10' + url) as r: + data = await r.json() + match r.status: + case 200: + return data + case other: + raise APIException(data['message']) + + +async def post(token, url, data): + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bot {token}", + "User-Agent": f"DiscordBot (https://github.com/mounderfod/discobra 0.0.1)" + }) as session: + async with session.post(url='https://discord.com/api/v10' + url, data=data) as r: + data = await r.json() + match r.status: + case 200 | 204: + return data + case other: + raise APIException(data['message']) + + +async def patch(token, url, data): + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bot {token}", + "User-Agent": f"DiscordBot (https://github.com/mounderfod/discobra 0.0.1)" + }) as session: + async with session.patch(url='https://discord.com/api/v10' + url, data=data) as r: + data = await r.json() + match r.status: + case 200 | 204: + return data + case other: + raise APIException(data['message']) + + +async def delete(token, url): + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bot {token}", + "User-Agent": f"DiscordBot (https://github.com/mounderfod/discobra 0.0.1)" + }) as session: + async with session.delete(url='https://discord.com/api/v10' + url) as r: + data = await r.json() + match r.status: + case 200: + return data + case other: + raise APIException(data['message']) |