fix: retrieve user profile after refreshing twitch creds
This commit is contained in:
parent
5616f0e76d
commit
bc8db87944
5 changed files with 15 additions and 13 deletions
|
|
@ -10,6 +10,7 @@
|
|||
languages.python.version = "3.12.8";
|
||||
|
||||
enterShell = ''
|
||||
uv sync
|
||||
'';
|
||||
|
||||
dotenv.enable = true;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "huesoporro"
|
||||
version = "0.2.5"
|
||||
version = "0.2.8"
|
||||
description = "Misc Twitch bots"
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
|
|
|
|||
|
|
@ -11,17 +11,17 @@ class RefreshAction(BaseModel):
|
|||
authenticator: TwitchAuthenticator
|
||||
s: Settings
|
||||
|
||||
async def run(self, user: User):
|
||||
async def run(self, user: User) -> str | None:
|
||||
is_valid = await self.authenticator.token_is_valid(
|
||||
user.external_auth["twitch"]["access_token"]
|
||||
)
|
||||
if is_valid:
|
||||
return None
|
||||
|
||||
if not is_valid:
|
||||
new_tokens = await self.authenticator.refresh_token(
|
||||
user.external_auth["twitch"]["refresh_token"]
|
||||
)
|
||||
user.external_auth["twitch"]["access_token"] = new_tokens["access_token"] # type: ignore[index]
|
||||
user.external_auth["twitch"]["refresh_token"] = new_tokens["refresh_token"] # type: ignore[index]
|
||||
await self.user_repo.update(user)
|
||||
return user.encode()
|
||||
return None
|
||||
twitch_auth = await self.authenticator.refresh_token(
|
||||
user.external_auth["twitch"]["refresh_token"]
|
||||
)
|
||||
user.external_auth["twitch"]["access_token"] = twitch_auth.access_token
|
||||
user.external_auth["twitch"]["refresh_token"] = twitch_auth.refresh_token
|
||||
await self.user_repo.update(user)
|
||||
return user.encode()
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ class TwitchAuthenticator(BaseModel):
|
|||
headers={"Accept": "application/json"},
|
||||
)
|
||||
response.raise_for_status()
|
||||
return TwitchAuth(**response.json())
|
||||
profile = await self.get_userinfo(response.json()["access_token"])
|
||||
return TwitchAuth(**response.json(), userinfo=profile)
|
||||
|
||||
async def validate_token(self, access_token: str) -> str:
|
||||
response = await self.client.get(
|
||||
|
|
|
|||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -472,7 +472,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "huesoporro"
|
||||
version = "0.2.5"
|
||||
version = "0.2.8"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "aiosqlite" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue