mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-03 23:03:29 +01:00 
			
		
		
		
	Switched to F-Droid API
This commit is contained in:
		@@ -1,3 +1,5 @@
 | 
			
		||||
import 'dart:convert';
 | 
			
		||||
 | 
			
		||||
import 'package:html/parser.dart';
 | 
			
		||||
import 'package:http/http.dart';
 | 
			
		||||
import 'package:obtainium/custom_errors.dart';
 | 
			
		||||
@@ -38,36 +40,22 @@ class FDroid extends AppSource {
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      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) {
 | 
			
		||||
      var releases = parse(res.body).querySelectorAll('.package-version');
 | 
			
		||||
      List<dynamic> releases = jsonDecode(res.body)['packages'] ?? [];
 | 
			
		||||
      if (releases.isEmpty) {
 | 
			
		||||
        throw NoReleasesError();
 | 
			
		||||
      }
 | 
			
		||||
      String? latestVersion = releases[0]
 | 
			
		||||
          .querySelector('.package-version-header b')
 | 
			
		||||
          ?.innerHtml
 | 
			
		||||
          .split(' ')
 | 
			
		||||
          .sublist(1)
 | 
			
		||||
          .join(' ');
 | 
			
		||||
      String? latestVersion = releases[0]['versionName'];
 | 
			
		||||
      if (latestVersion == null) {
 | 
			
		||||
        throw NoVersionError();
 | 
			
		||||
      }
 | 
			
		||||
      List<String> apkUrls = releases
 | 
			
		||||
          .where((element) =>
 | 
			
		||||
              element
 | 
			
		||||
                  .querySelector('.package-version-header b')
 | 
			
		||||
                  ?.innerHtml
 | 
			
		||||
                  .split(' ')
 | 
			
		||||
                  .sublist(1)
 | 
			
		||||
                  .join(' ') ==
 | 
			
		||||
              latestVersion)
 | 
			
		||||
          .where((element) => element['versionName'] == latestVersion)
 | 
			
		||||
          .map((e) =>
 | 
			
		||||
              e
 | 
			
		||||
                  .querySelector('.package-version-download a')
 | 
			
		||||
                  ?.attributes['href'] ??
 | 
			
		||||
              '')
 | 
			
		||||
          .where((element) => element.isNotEmpty)
 | 
			
		||||
              'https://f-droid.org/repo/${appId}_${e['versionCode']}.apk')
 | 
			
		||||
          .toList();
 | 
			
		||||
      if (apkUrls.isEmpty) {
 | 
			
		||||
        throw NoAPKError();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user