Skip to content

Commit

Permalink
use pynitrokey implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
jj-so committed Dec 11, 2023
1 parent 4c6ce0b commit 807a352
Show file tree
Hide file tree
Showing 3 changed files with 238 additions and 54 deletions.
42 changes: 15 additions & 27 deletions nitrokeyapp/welcome_tab.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import webbrowser
from typing import Any, Dict, Optional
from typing import Optional

import requests
from pynitrokey.nk3.utils import Version
from pynitrokey.updates import Release, Repository
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget

Expand All @@ -11,7 +11,9 @@
from nitrokeyapp.qt_utils_mix_in import QtUtilsMixIn
from nitrokeyapp.ui.welcome_tab import Ui_WelcomeTab

API_BASE_URL = "https://api.github.com"
REPOSITORY_OWNER = "Nitrokey"
REPOSITORY_NAME = "nitrokey-app2"
REPOSITORY = Repository(owner=REPOSITORY_OWNER, name=REPOSITORY_NAME)


class WelcomeTab(QtUtilsMixIn, QWidget):
Expand All @@ -29,7 +31,16 @@ def __init__(self, parent: Optional[QWidget], log_file: str) -> None:

def check_update(self) -> None:
self.c_version = __version__
self.n_version = self.get_latest_release()
try:
self.get_release = REPOSITORY.get_latest_release()
except Exception:
self.ui.CheckUpdate.setText("No connection")
return

self.release = Release
self.last_release = self.release.__str__(self.get_release)

self.n_version = self.last_release
self.n_version = self.n_version[1:]

self.c_version_v = Version.from_str(self.c_version)
Expand All @@ -45,29 +56,6 @@ def check_update(self) -> None:
else:
self.ui.CheckUpdate.setText("App is up to date")

def get_latest_release(self) -> str:
release = self._call("/repos/Nitrokey/nitrokey-app2/releases/latest")
last_version = self.from_api_response(release)
return last_version

def from_api_response(cls, release: dict[Any, Any]) -> str:
tag = release["tag_name"]
return tag

def _call(self, path: str, errors: Dict[int, str] = dict()) -> dict[Any, Any]:
url = self._get_url(path)
response = requests.get(url)
for code in errors:
if response.status_code == code:
raise ValueError(errors[code])
response.raise_for_status()
data = response.json()
assert isinstance(data, dict)
return data

def _get_url(self, path: str) -> str:
return API_BASE_URL + path

@pyqtSlot()
def save_log(self) -> None:
save_log(self.log_file, self)
Loading

0 comments on commit 807a352

Please sign in to comment.