Rename column variables to be unambiguous

This commit is contained in:
Spotlight 2024-09-03 19:41:37 -05:00
parent fc327b71a3
commit 5d3a07b4c5
No known key found for this signature in database
GPG Key ID: 874AA355B3209BDC
3 changed files with 42 additions and 41 deletions

View File

@ -70,10 +70,10 @@ class Discord(Base):
__tablename__ = "discord"
id: Mapped[int] = mapped_column("id", primary_key=True, nullable=False, unique=True)
refresh: Mapped[str] = mapped_column("refresh", nullable=False)
bearer: Mapped[str] = mapped_column("bearer", nullable=False)
session: Mapped[str] = mapped_column("session")
token: Mapped[str] = mapped_column("token", unique=True)
refresh_token: Mapped[str] = mapped_column("refresh", nullable=False)
bearer_token: Mapped[str] = mapped_column("bearer", nullable=False)
rpc_session_token: Mapped[str] = mapped_column("session")
site_session_token: Mapped[str] = mapped_column("token", unique=True)
last_accessed: Mapped[int] = mapped_column("last_accessed", nullable=False)
generation_date: Mapped[int] = mapped_column("generation_date", nullable=False)
show_profile_button: Mapped[bool] = mapped_column("show_profile_button", nullable=False, default=True)

View File

@ -41,25 +41,26 @@ class DiscordSession():
def retire(self, refresh):
session.execute(
update(DiscordTable)
.where(DiscordTable.refresh == refresh)
.values(session='')
.where(DiscordTable.refresh_token == refresh)
.values(rpc_session_token='')
)
session.commit()
def create(self, refresh, discord_session):
def create(self, refresh_token: str, session_token: str):
session.execute(
update(DiscordTable)
.where(DiscordTable.refresh == refresh)
.values(session=discord_session)
.where(DiscordTable.refresh_token == refresh_token)
.values(rpc_session_token=session_token)
)
session.commit()
return discord_session
def update(self, discord_session):
def update(self, session_token: str):
session.execute(
update(DiscordTable)
.where(DiscordTable.last_accessed == time.time())
.values(session=discord_session)
.where(DiscordTable.rpc_session_token == session_token)
.values(
last_accessed=time.time(),
)
)
session.commit()
@ -68,7 +69,7 @@ class Discord():
def update_presence(self, current_user: DiscordTable, user_data: UserData, network: NetworkType):
last_accessed = user_data.last_accessed
if time.time() - last_accessed >= 1000:
DiscordSession().retire(current_user.refresh)
DiscordSession().retire(current_user.refresh_token)
elif time.time() - last_accessed <= 30:
print('[MANUAL RATE LIMITED]')
return False
@ -110,11 +111,11 @@ class Discord():
data['activities'][0]['assets']['small_image'] = user_data.mii_urls['face']
data['activities'][0]['assets']['small_text'] = small_text_detail
if discord_user.session:
data['token'] = discord_user.session
if discord_user.rpc_session_token:
data['token'] = discord_user.rpc_session_token
headers = {
'Authorization': 'Bearer %s' % current_user.bearer,
'Authorization': 'Bearer %s' % current_user.bearer_token,
'Content-Type': 'application/json',
}
# Truncate any text exceeding the maximum field limit, 128 characters.
@ -127,30 +128,30 @@ class Discord():
r.raise_for_status()
response = r.json()
DiscordSession().create(current_user.refresh, response['token'])
DiscordSession().create(current_user.refresh_token, response['token'])
DiscordSession().update(response['token'])
return True
def reset_presence(self, current_user: DiscordTable):
if not current_user.session:
if not current_user.rpc_session_token:
print('[NO SESSION TO RESET]')
return False
elif time.time() - current_user.last_accessed <= 30:
print('[MANUAL RATE LIMITED]')
return False
DiscordSession().update(current_user.session)
DiscordSession().update(current_user.rpc_session_token)
headers = {
'Authorization': 'Bearer %s' % current_user.bearer,
'Authorization': 'Bearer %s' % current_user.bearer_token,
'Content-Type': 'application/json',
}
data = {
'token': current_user.session,
'token': current_user.rpc_session_token,
}
r = requests.post('%s/users/@me/headless-sessions/delete' % API_ENDPOINT, data=json.dumps(data), headers=headers)
r.raise_for_status()
# Reset session
DiscordSession().create(current_user.refresh, '')
DiscordSession().create(current_user.rpc_session_token, '')
return True
def refresh_bearer(self, refresh: str, access: str, generation_date: int, user_id: int):
@ -173,10 +174,10 @@ class Discord():
session.execute(
update(DiscordTable)
.where(DiscordTable.refresh == refresh)
.where(DiscordTable.refresh_token == refresh)
.values(
refresh=response['refresh_token'],
bearer=response['access_token'],
refresh_token=response['refresh_token'],
bearer_token=response['access_token'],
generation_date=time.time()
)
)
@ -200,7 +201,7 @@ while True:
group = session.scalars(select(DiscordTable)).all()
for dn in group:
try:
if discord.refresh_bearer(dn.refresh, dn.bearer, dn.generation_date, dn.id):
if discord.refresh_bearer(dn.refresh_token, dn.bearer_token, dn.generation_date, dn.id):
time.sleep(delay * 2)
except HTTPError:
discord.delete_discord_user(dn.id)

View File

@ -158,7 +158,7 @@ def refreshBearer(token:str):
'client_id': '%s' % CLIENT_ID,
'client_secret': '%s' % CLIENT_SECRET,
'grant_type': 'refresh_token',
'refresh_token': user.refresh,
'refresh_token': user.refresh_token,
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
@ -168,13 +168,13 @@ def refreshBearer(token:str):
token, user, pfp = createDiscordUser('', r.json())
return token, user, pfp
def tokenFromID(ID:int):
def tokenFromID(ID:int) -> str:
stmt = select(Discord).where(Discord.id == ID)
result = db.session.scalar(stmt)
return result.token
return result.site_session_token
def userFromToken(token:str):
stmt = select(Discord).where(Discord.token == token)
def userFromToken(token: str) -> Discord:
stmt = select(Discord).where(Discord.site_session_token == token)
result = db.session.scalar(stmt)
if not result:
raise Exception('invalid token!')
@ -198,10 +198,10 @@ def createDiscordUser(code:str, response:dict = None):
raise Exception('UNIQUE constraint failed: discord.id')
db.session.add(Discord(
id=user['id'],
refresh=response['refresh_token'],
bearer=response['access_token'],
session='',
token=token,
refresh_token=response['refresh_token'],
bearer_token=response['access_token'],
rpc_session_token='',
site_session_token=token,
last_accessed=0,
generation_date=time.time()
))
@ -211,10 +211,10 @@ def createDiscordUser(code:str, response:dict = None):
old_token = tokenFromID(user['id'])
discord_user = userFromToken(old_token)
discord_user.refresh = response['refresh_token']
discord_user.bearer = response['access_token']
discord_user.refresh_token = response['refresh_token']
discord_user.bearer_token = response['access_token']
discord_user.generation_date = time.time()
discord_user.token = token
discord_user.site_session_token = token
db.session.commit()
return token, user['username'], ('https://cdn.discordapp.com/avatars/%s/%s.%s' % (user['id'], user['avatar'], 'gif' if user['avatar'].startswith('a_') else 'png') if user['avatar'] else '')
@ -402,7 +402,7 @@ def settings():
}
data = sidenav()
try:
stmt = select(Discord).where(Discord.token == request.cookies['token'])
stmt = select(Discord).where(Discord.site_session_token == request.cookies['token'])
result = db.session.scalar(stmt)
except Exception as e:
if 'invalid token' in str(e):
@ -781,7 +781,7 @@ def settingsToggler(which:str):
try:
db.session.execute(
update(Discord)
.where(Discord.token == request.cookies['token'])
.where(Discord.site_session_token == request.cookies['token'])
.values({getattr(Discord, which): toggle})
)