Module sanic_discord.oauth.http
Expand source code
from sanic_discord.rest import RestClient
from typing import List
class HttpClient(RestClient):
"""
Discord http client for oauth2.
"""
def fetch_user(self, access_token: str) -> dict:
"""
Fetches the user's profile using an access token.
Args:
access_token (str): The access token to use."""
return self.request("GET", "/users/@me", headers={"Authorization": f"Bearer {access_token}"})
def fetch_guilds(self, access_token: str) -> List[dict]:
return self.request("GET", "/users/@me/guilds", headers={"Authorization": f"Bearer {access_token}"})
def exchange_code(
self, code: str, redirect_uri: str,
client_id: int, client_secret: str
) -> dict:
"""
Exchanges a code for an access token.
Args:
code (str): The code to exchange.
redirect_uri (str): The redirect URI.
client_id (int): The client ID.
client_secret (str): The client secret.
"""
return self.request("POST", "/oauth2/token", data={
"grant_type": "authorization_code",
"code": code,
"redirect_uri": redirect_uri,
"client_id": client_id,
"client_secret": client_secret
}, headers={
"Content-Type": "application/x-www-form-urlencoded"
})
def refresh_token(
self, refresh_token: str, client_id: int, client_secret: str
) -> dict:
"""
Refreshes an access token using a refresh token.
Args:
refresh_token (str): The refresh token to use.
"""
return self.request("POST", "/oauth2/token", data={
"grant_type": "refresh_token",
"refresh_token": refresh_token,
"client_id": client_id,
"client_secret": client_secret
}, headers={
"Content-Type": "application/x-www-form-urlencoded"
})
async def add_guild(
self, guild_id: str, user_id: str, access_token: str
) -> None:
await self.request(
"GET", f"//guilds/{guild_id}/members/{user_id}",
params={"access_token": access_token}
)
Classes
class HttpClient
-
Discord http client for oauth2.
Expand source code
class HttpClient(RestClient): """ Discord http client for oauth2. """ def fetch_user(self, access_token: str) -> dict: """ Fetches the user's profile using an access token. Args: access_token (str): The access token to use.""" return self.request("GET", "/users/@me", headers={"Authorization": f"Bearer {access_token}"}) def fetch_guilds(self, access_token: str) -> List[dict]: return self.request("GET", "/users/@me/guilds", headers={"Authorization": f"Bearer {access_token}"}) def exchange_code( self, code: str, redirect_uri: str, client_id: int, client_secret: str ) -> dict: """ Exchanges a code for an access token. Args: code (str): The code to exchange. redirect_uri (str): The redirect URI. client_id (int): The client ID. client_secret (str): The client secret. """ return self.request("POST", "/oauth2/token", data={ "grant_type": "authorization_code", "code": code, "redirect_uri": redirect_uri, "client_id": client_id, "client_secret": client_secret }, headers={ "Content-Type": "application/x-www-form-urlencoded" }) def refresh_token( self, refresh_token: str, client_id: int, client_secret: str ) -> dict: """ Refreshes an access token using a refresh token. Args: refresh_token (str): The refresh token to use. """ return self.request("POST", "/oauth2/token", data={ "grant_type": "refresh_token", "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret }, headers={ "Content-Type": "application/x-www-form-urlencoded" }) async def add_guild( self, guild_id: str, user_id: str, access_token: str ) -> None: await self.request( "GET", f"//guilds/{guild_id}/members/{user_id}", params={"access_token": access_token} )
Ancestors
Methods
async def add_guild(self, guild_id: str, user_id: str, access_token: str) ‑> None
-
Expand source code
async def add_guild( self, guild_id: str, user_id: str, access_token: str ) -> None: await self.request( "GET", f"//guilds/{guild_id}/members/{user_id}", params={"access_token": access_token} )
def exchange_code(self, code: str, redirect_uri: str, client_id: int, client_secret: str) ‑> dict
-
Exchanges a code for an access token.
Args
code
:str
- The code to exchange.
redirect_uri
:str
- The redirect URI.
client_id
:int
- The client ID.
client_secret
:str
- The client secret.
Expand source code
def exchange_code( self, code: str, redirect_uri: str, client_id: int, client_secret: str ) -> dict: """ Exchanges a code for an access token. Args: code (str): The code to exchange. redirect_uri (str): The redirect URI. client_id (int): The client ID. client_secret (str): The client secret. """ return self.request("POST", "/oauth2/token", data={ "grant_type": "authorization_code", "code": code, "redirect_uri": redirect_uri, "client_id": client_id, "client_secret": client_secret }, headers={ "Content-Type": "application/x-www-form-urlencoded" })
def fetch_guilds(self, access_token: str) ‑> List[dict]
-
Expand source code
def fetch_guilds(self, access_token: str) -> List[dict]: return self.request("GET", "/users/@me/guilds", headers={"Authorization": f"Bearer {access_token}"})
def fetch_user(self, access_token: str) ‑> dict
-
Fetches the user's profile using an access token.
Args
access_token
:str
- The access token to use.
Expand source code
def fetch_user(self, access_token: str) -> dict: """ Fetches the user's profile using an access token. Args: access_token (str): The access token to use.""" return self.request("GET", "/users/@me", headers={"Authorization": f"Bearer {access_token}"})
def refresh_token(self, refresh_token: str, client_id: int, client_secret: str) ‑> dict
-
Refreshes an access token using a refresh token.
Args
refresh_token
:str
- The refresh token to use.
Expand source code
def refresh_token( self, refresh_token: str, client_id: int, client_secret: str ) -> dict: """ Refreshes an access token using a refresh token. Args: refresh_token (str): The refresh token to use. """ return self.request("POST", "/oauth2/token", data={ "grant_type": "refresh_token", "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret }, headers={ "Content-Type": "application/x-www-form-urlencoded" })
Inherited members