Switched to F-Droid API

This commit is contained in:
Imran Remtulla
2022-11-17 18:36:05 -05:00
parent 618a1523cf
commit 2059e4fd44

View File

@@ -1,3 +1,5 @@
import 'dart:convert';
import 'package:html/parser.dart'; import 'package:html/parser.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:obtainium/custom_errors.dart'; import 'package:obtainium/custom_errors.dart';
@@ -38,36 +40,22 @@ class FDroid extends AppSource {
@override @override
Future<APKDetails> getLatestAPKDetails( Future<APKDetails> getLatestAPKDetails(
String standardUrl, List<String> additionalData) async { String standardUrl, List<String> additionalData) async {
Response res = await get(Uri.parse(standardUrl)); String? appId = tryGettingAppIdFromURL(standardUrl);
Response res =
await get(Uri.parse('https://f-droid.org/api/v1/packages/$appId'));
if (res.statusCode == 200) { if (res.statusCode == 200) {
var releases = parse(res.body).querySelectorAll('.package-version'); List<dynamic> releases = jsonDecode(res.body)['packages'] ?? [];
if (releases.isEmpty) { if (releases.isEmpty) {
throw NoReleasesError(); throw NoReleasesError();
} }
String? latestVersion = releases[0] String? latestVersion = releases[0]['versionName'];
.querySelector('.package-version-header b')
?.innerHtml
.split(' ')
.sublist(1)
.join(' ');
if (latestVersion == null) { if (latestVersion == null) {
throw NoVersionError(); throw NoVersionError();
} }
List<String> apkUrls = releases List<String> apkUrls = releases
.where((element) => .where((element) => element['versionName'] == latestVersion)
element
.querySelector('.package-version-header b')
?.innerHtml
.split(' ')
.sublist(1)
.join(' ') ==
latestVersion)
.map((e) => .map((e) =>
e 'https://f-droid.org/repo/${appId}_${e['versionCode']}.apk')
.querySelector('.package-version-download a')
?.attributes['href'] ??
'')
.where((element) => element.isNotEmpty)
.toList(); .toList();
if (apkUrls.isEmpty) { if (apkUrls.isEmpty) {
throw NoAPKError(); throw NoAPKError();