fix: retrieve user profile after refreshing twitch creds

This commit is contained in:
cătălin 2025-02-24 11:27:10 +01:00
commit bc8db87944
No known key found for this signature in database
5 changed files with 15 additions and 13 deletions

View file

@ -10,6 +10,7 @@
languages.python.version = "3.12.8"; languages.python.version = "3.12.8";
enterShell = '' enterShell = ''
uv sync
''; '';
dotenv.enable = true; dotenv.enable = true;

View file

@ -1,6 +1,6 @@
[project] [project]
name = "huesoporro" name = "huesoporro"
version = "0.2.5" version = "0.2.8"
description = "Misc Twitch bots" description = "Misc Twitch bots"
readme = "README.md" readme = "README.md"
authors = [ authors = [

View file

@ -11,17 +11,17 @@ class RefreshAction(BaseModel):
authenticator: TwitchAuthenticator authenticator: TwitchAuthenticator
s: Settings s: Settings
async def run(self, user: User): async def run(self, user: User) -> str | None:
is_valid = await self.authenticator.token_is_valid( is_valid = await self.authenticator.token_is_valid(
user.external_auth["twitch"]["access_token"] user.external_auth["twitch"]["access_token"]
) )
if is_valid:
return None
if not is_valid: twitch_auth = await self.authenticator.refresh_token(
new_tokens = await self.authenticator.refresh_token( user.external_auth["twitch"]["refresh_token"]
user.external_auth["twitch"]["refresh_token"] )
) user.external_auth["twitch"]["access_token"] = twitch_auth.access_token
user.external_auth["twitch"]["access_token"] = new_tokens["access_token"] # type: ignore[index] user.external_auth["twitch"]["refresh_token"] = twitch_auth.refresh_token
user.external_auth["twitch"]["refresh_token"] = new_tokens["refresh_token"] # type: ignore[index] await self.user_repo.update(user)
await self.user_repo.update(user) return user.encode()
return user.encode()
return None

View file

@ -52,7 +52,8 @@ class TwitchAuthenticator(BaseModel):
headers={"Accept": "application/json"}, headers={"Accept": "application/json"},
) )
response.raise_for_status() 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: async def validate_token(self, access_token: str) -> str:
response = await self.client.get( response = await self.client.get(

2
uv.lock generated
View file

@ -472,7 +472,7 @@ wheels = [
[[package]] [[package]]
name = "huesoporro" name = "huesoporro"
version = "0.2.5" version = "0.2.8"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "aiosqlite" }, { name = "aiosqlite" },