mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-01 05:10:15 +02:00
Better partial APK hash as pseudo-version (related to #1101)
This commit is contained in:
@@ -310,7 +310,7 @@ class HTML extends AppSource {
|
||||
: rel);
|
||||
version ??= additionalSettings['supportFixedAPKURL'] != true
|
||||
? rel.hashCode.toString()
|
||||
: (await checkDownloadHash(rel)).toString();
|
||||
: (await checkPartialDownloadHashDynamc(rel)).toString();
|
||||
return APKDetails(version, [rel].map((e) => MapEntry(e, e)).toList(),
|
||||
AppNames(uri.host, tr('app')));
|
||||
}
|
||||
|
@@ -167,8 +167,25 @@ String hashListOfLists(List<List<int>> data) {
|
||||
return hash.hashCode.toString();
|
||||
}
|
||||
|
||||
Future<String> checkDownloadHash(String url,
|
||||
{int bytesToGrab = 1024, Map<String, String>? headers}) async {
|
||||
Future<String> checkPartialDownloadHashDynamc(String url,
|
||||
{int startingSize = 1024,
|
||||
int lowerLimit = 128,
|
||||
Map<String, String>? headers}) async {
|
||||
for (int i = startingSize; i >= lowerLimit; i -= 256) {
|
||||
List<String> ab = await Future.wait([
|
||||
checkPartialDownloadHash(url, i, headers: headers),
|
||||
checkPartialDownloadHash(url, i, headers: headers)
|
||||
]);
|
||||
if (ab[0] == ab[1]) {
|
||||
print(i);
|
||||
return ab[0];
|
||||
}
|
||||
}
|
||||
throw NoVersionError();
|
||||
}
|
||||
|
||||
Future<String> checkPartialDownloadHash(String url, int bytesToGrab,
|
||||
{Map<String, String>? headers}) async {
|
||||
var req = Request('GET', Uri.parse(url));
|
||||
if (headers != null) {
|
||||
req.headers.addAll(headers);
|
||||
|
Reference in New Issue
Block a user