summaryrefslogtreecommitdiff
path: root/ATRI/utils/check_update.py
diff options
context:
space:
mode:
authorSakuraMemory <[email protected]>2022-04-05 16:18:34 +0800
committerGitHub <[email protected]>2022-04-05 16:18:34 +0800
commitceb7b3a5b11d3978c46185af1cf982a2eb3ca961 (patch)
tree0e509c76a575db8a4ab485d503ea7bf3e73b5383 /ATRI/utils/check_update.py
parenta2f3925fc63d12ad8daefa6ba30b18bc81693c99 (diff)
parent93e71022a5987ca898ca42a84e10cf3a1ddacd0a (diff)
downloadATRI-ceb7b3a5b11d3978c46185af1cf982a2eb3ca961.tar.gz
ATRI-ceb7b3a5b11d3978c46185af1cf982a2eb3ca961.tar.bz2
ATRI-ceb7b3a5b11d3978c46185af1cf982a2eb3ca961.zip
Merge pull request #5 from Kyomotoi/main
sync main
Diffstat (limited to 'ATRI/utils/check_update.py')
-rw-r--r--ATRI/utils/check_update.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/ATRI/utils/check_update.py b/ATRI/utils/check_update.py
new file mode 100644
index 0000000..a8575ab
--- /dev/null
+++ b/ATRI/utils/check_update.py
@@ -0,0 +1,54 @@
+from ATRI.exceptions import RequestError
+
+from . import request
+
+
+REPO_COMMITS_URL = "https://api.github.com/repos/Kyomotoi/ATRI/commits"
+REPO_RELEASE_URL = "https://api.github.com/repos/Kyomotoi/ATRI/releases"
+
+
+class CheckUpdate:
+ @staticmethod
+ async def _get_commits_info() -> dict:
+ req = await request.get(REPO_COMMITS_URL)
+ return req.json()
+
+ @staticmethod
+ async def _get_release_info() -> dict:
+ req = await request.get(REPO_RELEASE_URL)
+ return req.json()
+
+ @classmethod
+ async def show_latest_commit_info(cls) -> str:
+ try:
+ data = await cls._get_commits_info()
+ except RequestError:
+ raise RequestError("Getting commit info timeout...")
+
+ try:
+ commit_data: dict = data[0]
+ except Exception:
+ raise Exception("GitHub has been error!!!")
+
+ c_info = commit_data["commit"]
+ c_msg = c_info["message"]
+ c_sha = commit_data["sha"][0:5]
+ c_time = c_info["author"]["date"]
+
+ return f"Latest commit {c_msg} | sha: {c_sha} | time: {c_time}"
+
+ @classmethod
+ async def show_latest_version(cls) -> tuple:
+ try:
+ data = await cls._get_release_info()
+ except RequestError:
+ raise RequestError("Getting release list timeout...")
+
+ try:
+ release_data: dict = data[0]
+ except Exception:
+ raise Exception("GitHub has been error!!!")
+
+ l_v = release_data["tag_name"]
+ l_v_t = release_data["published_at"]
+ return l_v, l_v_t