Skip to content

Commit a7c5db7

Browse files
committed
Using the refreshToken for refresh
- Rename `self.token_info.refreshToken` to `exp` - Stop storing the username/password - Store the `refreshToken` from the login request
1 parent b8e422f commit a7c5db7

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

tb_rest_client/rest_client_base.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,8 @@ def __init__(self, base_url):
6767
self.base_url = base_url
6868
else:
6969
self.base_url = "http://" + base_url
70-
self.token_info = {"token": "", "refreshToken": 0}
70+
self.token_info = {"token": "", "refreshToken": "", "exp": 0}
7171
self.api_client = None
72-
self.username = None
73-
self.password = None
7472
self.logged_in = False
7573
self.stopped = True
7674
self.configuration = Configuration()
@@ -81,9 +79,9 @@ def run(self):
8179
while not self.stopped:
8280
try:
8381
check_time = time()
84-
if check_time >= self.token_info["refreshToken"] and self.logged_in:
85-
if self.username and self.password:
86-
self.login(self.username, self.password)
82+
if check_time >= self.token_info["exp"] and self.logged_in:
83+
if self.token_info["refreshToken"]:
84+
self.refresh()
8785
else:
8886
logger.error("No username or password provided!")
8987
sleep(1)
@@ -105,10 +103,7 @@ def __exit__(self, exc_type, exc_val, exc_tb):
105103

106104
def login(self, username, password):
107105
"""Authorization on the host and saving the toke information"""
108-
if self.username is None and self.password is None:
109-
self.username = username
110-
self.password = password
111-
self.logged_in = True
106+
self.logged_in = True
112107

113108
token_json = post(self.base_url + "/api/auth/login", json={"username": username, "password": password},
114109
verify=self.configuration.verify_ssl).json()
@@ -123,13 +118,26 @@ def public_login(self, public_id):
123118
self.__save_token(token_json)
124119
self.__load_configuration()
125120

121+
def refresh(self):
122+
if not self.token_info["refreshToken"]:
123+
return
124+
125+
token_json = post(self.base_url + "/api/auth/token", json={"refreshToken": self.token_info["refreshToken"]},
126+
verify=self.configuration.verify_ssl).json()
127+
128+
self.__save_token(token_json)
129+
self.__load_configuration()
130+
126131
def __save_token(self, token_json):
127132
token = None
133+
refresh_token = None
128134
if isinstance(token_json, dict) and token_json.get("token") is not None:
129135
token = token_json["token"]
136+
refresh_token = token_json["refreshToken"]
130137
self.configuration.api_key_prefix["X-Authorization"] = "Bearer"
131138
self.configuration.api_key["X-Authorization"] = token
132139
self.token_info['token'] = token
140+
self.token_info['refreshToken'] = refreshToken
133141

134142
def __load_configuration(self):
135143
self.api_client = ApiClient(self.configuration)

0 commit comments

Comments
 (0)