diff --git a/window.py b/window.py index 0f17fd1..857b63d 100644 --- a/window.py +++ b/window.py @@ -226,8 +226,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): header = { - "User-Agent": "Api Test", - "Authorization": "Bearer " + "User-Agent": "", + "Authorization": "" } @@ -243,11 +243,33 @@ class SearchDialog(QDialog, Ui_SearchDialog): self.parent = parent # import tokens from tokens.json - self.tokens = jsonIO.load_json("tokens.json") - header["Authorization"] += self.tokens["access_token"] + if not jsonIO.is_valid_json("tokens.json"): + jsonIO.save_json("tokens.json", { + "useragent": "", + "client_id": "", + "client_secret": "", + "authorization_code": "", + "access_token": "", + "refresh_token": "" + }) + QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") + self.close() + else: + self.tokens = jsonIO.load_json("tokens.json") + for key, value in self.tokens.items(): + if (key != "access_token" or key != "refresh_token") and value == "": + QMessageBox.critical(self, "Ошибка", "Заполните 'tokens.json' своими данными чтобы поиск работал корректно!") + self.close() + if self.tokens["access_token"] == "": + self.get_new_access_token() + self.update_headers() self.ui.search.clicked.connect(self.search_titles) + def update_headers(self): + header["User-Agent"] = self.tokens["useragent"] + header["Authorization"] = "Bearer {}".format(self.tokens["access_token"]) + def get_new_access_token(self): response = post("https://shikimori.one/oauth/token", headers=header, data={ "grant_type": "authorization_code", @@ -260,9 +282,10 @@ class SearchDialog(QDialog, Ui_SearchDialog): self.tokens["access_token"] = new_tokens["access_token"] self.tokens["refresh_token"] = new_tokens["refresh_token"] jsonIO.save_json("tokens.json", self.tokens) - # print("got new tokens") + self.update_headers() + print("got new tokens") - def refresh_token(self): + def refresh_access_token(self): response = post("https://shikimori.one/oauth/token", headers=header, data={ "grant_type": "refresh_token", "client_id": self.tokens["client_id"], @@ -274,7 +297,7 @@ class SearchDialog(QDialog, Ui_SearchDialog): self.tokens["access_token"] = new_tokens["access_token"] self.tokens["refresh_token"] = new_tokens["refresh_token"] jsonIO.save_json("tokens.json", self.tokens) - header["Authorization"] = "Bearer " + new_tokens["access_token"] + self.update_headers() print("tokens updated", new_tokens) def search_titles(self): @@ -286,7 +309,7 @@ class SearchDialog(QDialog, Ui_SearchDialog): # print(response.json()) if response.status_code == 401: if response.json()["error"] == "invalid_token": - self.refresh_token() + self.refresh_access_token() # self.search_titles() return if response.status_code == 200: