mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 05:23:28 +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: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(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user