Fixed relative link handling in HTML source

This commit is contained in:
Imran Remtulla
2023-04-12 15:17:08 -04:00
parent 6275cbf114
commit 0704dfe2ee

View File

@@ -34,16 +34,20 @@ class HTML extends AppSource {
var rel = links.last; var rel = links.last;
var apkName = rel.split('/').last; var apkName = rel.split('/').last;
var version = apkName.substring(0, apkName.length - 4); var version = apkName.substring(0, apkName.length - 4);
List<String> apkUrls = [rel] List<String> apkUrls = [rel].map((e) {
.map((e) => e.toLowerCase().startsWith('http://') || try {
e.toLowerCase().startsWith('https://') Uri.parse(e).origin;
? e return e;
: e.startsWith('/') } catch (err) {
? '${uri.origin}/$e' // is relative
: uri.path.endsWith('.html') || uri.path.endsWith('.php') }
? '${uri.origin}/${uri.path.split('/').sublist(0, uri.path.split('/').length - 1).join('/')}/$e' var currPathSegments = uri.path.split('/');
: '${uri.origin}/${uri.path}/$e') if (e.startsWith('/') || currPathSegments.isEmpty) {
.toList(); return '${uri.origin}/$e';
} else {
return '${uri.origin}/${currPathSegments.sublist(0, currPathSegments.length - 1).join('/')}/$e';
}
}).toList();
return APKDetails( return APKDetails(
version, getApkUrlsFromUrls(apkUrls), AppNames(uri.host, tr('app'))); version, getApkUrlsFromUrls(apkUrls), AppNames(uri.host, tr('app')));
} else { } else {