diff options
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']) |