diff --git a/flask_discord/_http.py b/flask_discord/_http.py index 4560cfe..6150daa 100644 --- a/flask_discord/_http.py +++ b/flask_discord/_http.py @@ -72,8 +72,8 @@ class DiscordOAuth2HttpClient(abc.ABC): auto_refresh_url=configs.DISCORD_TOKEN_URL, token_updater=self._token_updater) - def get(self, route: str) -> dict: - """Sends HTTP GET request to provided route or discord endpoint. + def request(self, route: str, method="GET", data=None, **kwargs) -> dict: + """Sends HTTP request to provided route or discord endpoint. Note ---- @@ -83,6 +83,10 @@ class DiscordOAuth2HttpClient(abc.ABC): ---------- route : str Route or endpoint URL to send HTTP GET request to. Example: ``/users/@me`` + method : str, optional + Specify the HTTP method to use to perform this request. + data : dict, optional + The optional payload the include with the request. Returns ------- @@ -95,7 +99,7 @@ class DiscordOAuth2HttpClient(abc.ABC): Raises :py:class:`flask_discord.Unauthorized` if current user is not authorized. """ - response = self._make_session().get(configs.DISCORD_API_BASE_URL + route) + response = self._make_session().request(method, configs.DISCORD_API_BASE_URL + route, data, **kwargs) if response.status_code == 401: raise exceptions.Unauthorized @@ -103,8 +107,7 @@ class DiscordOAuth2HttpClient(abc.ABC): return response.json() def get_json(self): - discord_session = self._make_session(token=session.get("DISCORD_OAUTH2_TOKEN")) - user = discord_session.get(configs.DISCORD_API_BASE_URL + '/users/@me').json() - guilds = discord_session.get(configs.DISCORD_API_BASE_URL + '/users/@me/guilds').json() - connections = discord_session.get(configs.DISCORD_API_BASE_URL + '/users/@me/connections').json() + user = self.request('/users/@me') + guilds = self.request('/users/@me/guilds') + connections = self.request('/users/@me/connections') return jsonify(user=user, guilds=guilds, connections=connections) diff --git a/flask_discord/client.py b/flask_discord/client.py index 9174efd..96ad5dc 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -80,7 +80,7 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): flask_discord.models.User """ - return models.User(self.get("/users/@me")) + return models.User(self.request("/users/@me")) def fetch_connections(self) -> list: """Requests and returns connections of current user from discord. @@ -91,7 +91,7 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): List of :py:class:`flask_discord.models.UserConnection` objects. """ - connections_payload = self.get("/users/@me/connections") + connections_payload = self.request("/users/@me/connections") return [models.UserConnection(payload) for payload in connections_payload] def fetch_guilds(self) -> list: @@ -103,5 +103,5 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): List of :py:class:`flask_discord.models.Guild` objects. """ - guilds_payload = self.get("/users/@me/guilds") + guilds_payload = self.request("/users/@me/guilds") return [models.Guild(payload) for payload in guilds_payload] diff --git a/tests/test_app.py b/tests/test_app.py index 9573887..b22f6ab 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -17,7 +17,7 @@ discord = DiscordOAuth2Session(app) @app.route("/") def index(): - return discord.create_session() + return discord.create_session(["guilds", "connections"]) @app.route("/callback/") @@ -26,6 +26,11 @@ def callback(): return redirect(url_for(".me")) +@app.route("/get_json/") +def get_json(): + return discord.get_json() + + @app.route("/me/") def me(): user = discord.fetch_user() @@ -36,6 +41,7 @@ def me():