From c85b84bd0ab593dd13a98825edd23fd41a654aa3 Mon Sep 17 00:00:00 2001 From: thecosmos Date: Tue, 21 May 2019 00:15:15 +0530 Subject: [PATCH] Add user property --- flask_discord/client.py | 20 +++++++++++++++++++- tests/test_app.py | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/flask_discord/client.py b/flask_discord/client.py index a3445ba..f140220 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -85,7 +85,7 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): return self._make_session().authorized def fetch_user(self) -> models.User: - """This method requests user data from discord, caches native :py:class:`flask_discord.models.User` + """This method requests current user data from discord, caches native :py:class:`flask_discord.models.User` to flask `session `_ object. Returns @@ -96,6 +96,24 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): session["discord_user"] = models.User(self.get("/users/@me")) return session["discord_user"] + @property + def user(self) -> models.User: + """A property which returns cached current :py:class:`flask_discord.models.User` from flask + `session `_ object. + + Note + ---- + If user is not present in flask `session `_ + object, it requests user data from discord, caches user to session and then returns user object. + + Returns + ------- + flask_discord.models.User + Cached discord user object form flask `session `_. + + """ + return session.get("discord_user") or self.fetch_user() + def fetch_connections(self) -> models.UserConnection: """Requests and returns connections of current user from discord. diff --git a/tests/test_app.py b/tests/test_app.py index 336e5f2..1f5f8dc 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -24,7 +24,7 @@ def callback(): @app.route("/me/") def me(): - user = discord.fetch_user() + user = discord.user return f"""