From 50a2a20dfadf40be3d6b787d1f3e36bc6c388374 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 25 Oct 2020 19:49:27 +0000 Subject: Add Discord API wrapper --- backend/discord.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 backend/discord.py (limited to 'backend/discord.py') diff --git a/backend/discord.py b/backend/discord.py new file mode 100644 index 0000000..d6310b7 --- /dev/null +++ b/backend/discord.py @@ -0,0 +1,38 @@ +"""Various utilities for working with the Discord API.""" +import httpx + +from backend.constants import ( + OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, OAUTH2_REDIRECT_URI +) + +API_BASE_URL = "https://discord.com/api/v8" + + +async def fetch_bearer_token(access_code: str) -> dict: + async with httpx.AsyncClient() as client: + data = { + "client_id": OAUTH2_CLIENT_ID, + "client_secret": OAUTH2_CLIENT_SECRET, + "grant_type": "authorization_code", + "code": access_code, + "redirect_uri": OAUTH2_REDIRECT_URI + } + + r = await client.post(f"{API_BASE_URL}/oauth2/token", headers={ + "Content-Type": "application/x-www-form-urlencoded" + }, data=data) + + r.raise_for_status() + + return r.json() + + +async def fetch_user_details(bearer_token: str) -> dict: + async with httpx.AsyncClient() as client: + r = await client.get(f"{API_BASE_URL}/users/@me", headers={ + "Authorization": f"Bearer {bearer_token}" + }) + + r.raise_for_status() + + return r.json() -- cgit v1.2.3