Skip to content

Commit 00d2bd8

Browse files
sonic2kkDavidoTek
andauthored
GE-Proton: Refactor to use fetch_project_release_data (#524)
* util: Implement fetching `checksum` in `fetch_project_release_data` * GE-Proton: Refactor to use `fetch_project_release_data` * util: Note that `fetch_project_release_data` can return a `checksum` now * GE-Proton: remove unused import --------- Co-authored-by: DavidoTek <54072917+DavidoTek@users.noreply.github.com>
1 parent a6cdf72 commit 00d2bd8

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

pupgui2/resources/ctmods/ctmod_00protonge.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
from PySide6.QtCore import QObject, QCoreApplication, Signal, Property
1111

1212
from pupgui2.datastructures import Launcher
13-
from pupgui2.util import fetch_project_releases, get_launcher_from_installdir, extract_tar
13+
from pupgui2.util import fetch_project_release_data, fetch_project_releases
14+
from pupgui2.util import get_launcher_from_installdir, extract_tar
1415
from pupgui2.util import build_headers_with_authorization
1516
from pupgui2.networkutil import download_file
1617

@@ -100,19 +101,8 @@ def __fetch_github_data(self, tag):
100101
Content(s):
101102
'version', 'date', 'download', 'size', 'checksum'
102103
"""
103-
url = self.CT_URL + (f'/tags/{tag}' if tag else '/latest')
104-
data = self.rs.get(url).json()
105-
if 'tag_name' not in data:
106-
return None
107-
108-
values = {'version': data['tag_name'], 'date': data['published_at'].split('T')[0]}
109-
for asset in data['assets']:
110-
if asset['name'].endswith('sha512sum'):
111-
values['checksum'] = asset['browser_download_url']
112-
elif asset['name'].endswith(self.release_format):
113-
values['download'] = asset['browser_download_url']
114-
values['size'] = asset['size']
115-
return values
104+
105+
return fetch_project_release_data(self.CT_URL, self.release_format, self.rs, tag=tag, checksum_suffix='.sha512sum')
116106

117107
def __get_data(self, version: str, install_dir: str) -> tuple[dict | None, str | None]:
118108

pupgui2/util.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -681,14 +681,13 @@ def get_download_url_from_asset(release_url: str, asset: dict, release_format: s
681681
return ''
682682

683683

684-
# TODO in future if this is re-used for other ctmods other than DXVK and dxvk-async, try to parse more data i.e. checksum
685-
def fetch_project_release_data(release_url: str, release_format: str, rs: requests.Session, tag: str = '', asset_condition: Callable | None = None) -> dict:
684+
def fetch_project_release_data(release_url: str, release_format: str, rs: requests.Session, tag: str = '', checksum_suffix: str = '', asset_condition: Callable | None = None) -> dict:
686685

687686
"""
688687
Fetch information about a given release based on its tag, with an optional condition lambda.
689688
Return Type: dict
690689
Content(s):
691-
'version', 'date', 'download', 'size' (if available)
690+
'version', 'date', 'download', 'size' (if available), 'checksum' (if available)
692691
"""
693692

694693
date_key: str = ''
@@ -712,7 +711,13 @@ def fetch_project_release_data(release_url: str, release_format: str, rs: reques
712711
values['download'] = asset_url
713712
values['size'] = asset.get('size', None)
714713

715-
break
714+
if bool(checksum_suffix) and not 'checksum' in values:
715+
checksum_url = get_download_url_from_asset(release_url, asset, release_format=checksum_suffix)
716+
717+
if not bool(checksum_url):
718+
continue
719+
720+
values['checksum'] = checksum_url
716721

717722
return values
718723

0 commit comments

Comments
 (0)