Store APK names with URLs (#432)

This commit is contained in:
Imran Remtulla
2023-04-05 18:50:19 -04:00
parent 361a3e1bc2
commit 202ce4f0d5
18 changed files with 65 additions and 41 deletions

View File

@@ -68,7 +68,7 @@ class Codeberg extends AppSource {
if (res.statusCode == 200) {
var releases = jsonDecode(res.body) as List<dynamic>;
List<String> getReleaseAPKUrls(dynamic release) =>
List<MapEntry<String, String>> getReleaseAPKUrls(dynamic release) =>
(release['assets'] as List<dynamic>?)
?.map((e) {
return e['name'] != null && e['browser_download_url'] != null
@@ -77,7 +77,6 @@ class Codeberg extends AppSource {
: const MapEntry('', '');
})
.where((element) => element.key.toLowerCase().endsWith('.apk'))
.map((e) => e.value)
.toList() ??
[];
@@ -119,7 +118,9 @@ class Codeberg extends AppSource {
throw NoVersionError();
}
var changeLog = targetRelease['body'].toString();
return APKDetails(version, targetRelease['apkUrls'] as List<String>,
return APKDetails(
version,
targetRelease['apkUrls'] as List<MapEntry<String, String>>,
getAppNames(standardUrl),
releaseDate: releaseDate,
changeLog: changeLog.isEmpty ? null : changeLog);

View File

@@ -50,7 +50,7 @@ class FDroid extends AppSource {
.where((element) => element['versionName'] == latestVersion)
.map((e) => '${apkUrlPrefix}_${e['versionCode']}.apk')
.toList();
return APKDetails(latestVersion, apkUrls,
return APKDetails(latestVersion, getApkUrlsFromUrls(apkUrls),
AppNames(name, Uri.parse(standardUrl).pathSegments.last));
} else {
throw getObtainiumHttpError(res);

View File

@@ -80,7 +80,8 @@ class FDroidRepo extends AppSource {
element.querySelector('apkname') != null)
.map((e) => '$standardUrl/${e.querySelector('apkname')!.innerHtml}')
.toList();
return APKDetails(latestVersion, apkUrls, AppNames(authorName, appName),
return APKDetails(latestVersion, getApkUrlsFromUrls(apkUrls),
AppNames(authorName, appName),
releaseDate: releaseDate);
} else {
throw getObtainiumHttpError(res);

View File

@@ -161,7 +161,9 @@ class GitHub extends AppSource {
throw NoVersionError();
}
var changeLog = targetRelease['body'].toString();
return APKDetails(version, targetRelease['apkUrls'] as List<String>,
return APKDetails(
version,
getApkUrlsFromUrls(targetRelease['apkUrls'] as List<String>),
getAppNames(standardUrl),
releaseDate: releaseDate,
changeLog: changeLog.isEmpty ? null : changeLog);

View File

@@ -60,7 +60,8 @@ class GitLab extends AppSource {
if (version == null) {
throw NoVersionError();
}
return APKDetails(version, apkUrls, GitHub().getAppNames(standardUrl),
return APKDetails(version, getApkUrlsFromUrls(apkUrls),
GitHub().getAppNames(standardUrl),
releaseDate: releaseDate);
} else {
throw getObtainiumHttpError(res);

View File

@@ -42,7 +42,8 @@ class HTML extends AppSource {
? '${uri.origin}/$e'
: '${uri.origin}/${uri.path}/$e')
.toList();
return APKDetails(version, apkUrls, AppNames(uri.host, tr('app')));
return APKDetails(
version, getApkUrlsFromUrls(apkUrls), AppNames(uri.host, tr('app')));
} else {
throw getObtainiumHttpError(res);
}

View File

@@ -58,7 +58,7 @@ class Mullvad extends AppSource {
}
return APKDetails(
versions[0],
['https://mullvad.net/download/app/apk/latest'],
getApkUrlsFromUrls(['https://mullvad.net/download/app/apk/latest']),
AppNames(name, 'Mullvad-VPN'),
changeLog: changeLog);
} else {

View File

@@ -98,7 +98,7 @@ class NeutronCode extends AppSource {
? (customDateParse(dateStringOriginal))
: null;
var changeLogElements = http.querySelectorAll('.pd-fdesc p');
return APKDetails(version, [apkUrl],
return APKDetails(version, getApkUrlsFromUrls([apkUrl]),
AppNames(runtimeType.toString(), name ?? standardUrl.split('/').last),
releaseDate: dateString != null ? DateTime.parse(dateString) : null,
changeLog: changeLogElements.isNotEmpty

View File

@@ -28,7 +28,8 @@ class Signal extends AppSource {
if (version == null) {
throw NoVersionError();
}
return APKDetails(version, apkUrls, AppNames(name, 'Signal'));
return APKDetails(
version, getApkUrlsFromUrls(apkUrls), AppNames(name, 'Signal'));
} else {
throw getObtainiumHttpError(res);
}

View File

@@ -50,7 +50,7 @@ class SourceForge extends AppSource {
.toList();
return APKDetails(
version,
apkUrlList,
getApkUrlsFromUrls(apkUrlList),
AppNames(
name, standardUrl.substring(standardUrl.lastIndexOf('/') + 1)));
} else {

View File

@@ -53,7 +53,8 @@ class SteamMobile extends AppSource {
var version = links[0].substring(
versionMatch.start + apkNamePrefix.length + 2, versionMatch.end - 4);
var apkUrls = [links[0]];
return APKDetails(version, apkUrls, AppNames(name, apks[apkNamePrefix]!));
return APKDetails(version, getApkUrlsFromUrls(apkUrls),
AppNames(name, apks[apkNamePrefix]!));
} else {
throw getObtainiumHttpError(res);
}

View File

@@ -32,7 +32,8 @@ class TelegramApp extends AppSource {
throw NoVersionError();
}
String? apkUrl = 'https://telegram.org/dl/android/apk';
return APKDetails(version, [apkUrl], AppNames('Telegram', 'Telegram'));
return APKDetails(version, getApkUrlsFromUrls([apkUrl]),
AppNames('Telegram', 'Telegram'));
} else {
throw getObtainiumHttpError(res);
}

View File

@@ -54,7 +54,8 @@ class VLC extends AppSource {
throw getObtainiumHttpError(res2);
}
return APKDetails(version, apkUrls, AppNames('VideoLAN', 'VLC'));
return APKDetails(
version, getApkUrlsFromUrls(apkUrls), AppNames('VideoLAN', 'VLC'));
} else {
throw getObtainiumHttpError(res);
}

View File

@@ -64,9 +64,9 @@ class WhatsApp extends AppSource {
vLines[0].substring(versionMatch.start, versionMatch.end);
return APKDetails(
version,
[
getApkUrlsFromUrls([
'https://www.whatsapp.com/android?v=$version&=thisIsaPlaceholder&a=realURLPrefetchedAtDownloadTime'
],
]),
AppNames('Meta', 'WhatsApp'));
} else {
throw getObtainiumHttpError(res);