Skip to content

Commit 8232fd2

Browse files
authored
feat: Add automatic token refresh (#46)
1 parent 4cd7e23 commit 8232fd2

3 files changed

Lines changed: 38 additions & 53 deletions

File tree

bibli_o_mat/credential_helper.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,35 @@ def get_token(self, card_number: str, password: str, lib_id: int = 8726):
1919
print(f'Other error occurred: {err}')
2020
return r.json()['token']
2121

22-
def refresh_token(self, card_number: str):
22+
def refresh_token(self, user_id: str):
2323
cred = Query()
24-
result = self.db.search(cred.id == card_number)
25-
token = self.get_token(card_number=card_number,
24+
result = self.db.search(cred.id == user_id)
25+
token = self.get_token(card_number=user_id,
2626
password=result[0]['password'])
2727
self.db.update({'token': token, 'last_refresh': str(
28-
time.time())}, cred.id == card_number)
28+
time.time())}, cred.id == user_id)
2929

3030
def get_user_id_by_name(self, name: str):
3131
cred = Query()
3232
result = self.db.search(cred.name == name)
3333
if result:
3434
return result[0]['id']
3535

36+
def get_user_list(self):
37+
cred = Query()
38+
result = self.db.search(cred.id.exists())
39+
return result
40+
3641
def get_credentials(self, user_id: str = None):
3742
cred = Query()
38-
if user_id:
39-
# Return credentials for one id
40-
result = self.db.search(cred.id == user_id)
41-
return result[0]
42-
else:
43-
# Return all credentials
44-
return self.db.search(cred.id.exists())
43+
user = self.db.search(cred.id == user_id)[0]
44+
# Refresh token if it is older than 14 days or empty
45+
if ((time.time() - float(user['last_refresh']) > 14 * 24 * 60 * 60) or
46+
user['token'] == ''):
47+
print('refreshing access token')
48+
self.refresh_token(user_id)
49+
user = self.db.search(cred.id == user_id)[0]
50+
return user
4551

4652
def add_user(self, name, mail, id, password):
4753
token = self.get_token(card_number=id, password=password)

bibli_o_mat/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def list_users():
5656
"""list all bibli-o-mat users.
5757
"""
5858
table = Table('Name', 'Email', 'ID')
59-
for user in ch.get_credentials():
59+
for user in ch.get_user_list():
6060
table.add_row(user['name'], user['mail'], user['id'])
6161
console.print(table)
6262

poetry.lock

Lines changed: 20 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)