mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 13:33:28 +01:00 
			
		
		
		
	Improved GitHub starred import + other tweaks
This commit is contained in:
		| @@ -4,5 +4,5 @@ class RateLimitError { | ||||
|  | ||||
|   @override | ||||
|   String toString() => | ||||
|       'Rate limit reached - try again in $remainingMinutes minutes'; | ||||
|       'Too many requests (rate limited) - try again in $remainingMinutes minutes'; | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import 'dart:convert'; | ||||
|  | ||||
| import 'package:http/http.dart'; | ||||
| import 'package:obtainium/custom_errors.dart'; | ||||
| import 'package:obtainium/providers/source_provider.dart'; | ||||
|  | ||||
| class GitHubStars implements MassAppSource { | ||||
| @@ -10,23 +11,40 @@ class GitHubStars implements MassAppSource { | ||||
|   @override | ||||
|   late List<String> requiredArgs = ['Username']; | ||||
|  | ||||
|   @override | ||||
|   Future<List<String>> getUrls(List<String> args) async { | ||||
|     if (args.length != requiredArgs.length) { | ||||
|       throw 'Wrong number of arguments provided'; | ||||
|     } | ||||
|   Future<List<String>> getOnePageOfUserStarredUrls( | ||||
|       String username, int page) async { | ||||
|     Response res = await get(Uri.parse( | ||||
|         'https://api.github.com/users/${args[0]}/starred?per_page=100')); //TODO: Make requests for more pages until you run out | ||||
|         'https://api.github.com/users/$username/starred?per_page=100&page=$page')); | ||||
|     if (res.statusCode == 200) { | ||||
|       return (jsonDecode(res.body) as List<dynamic>) | ||||
|           .map((e) => e['html_url'] as String) | ||||
|           .toList(); | ||||
|     } else { | ||||
|       if (res.headers['x-ratelimit-remaining'] == '0') { | ||||
|         throw 'Rate limit reached - try again in ${(int.parse(res.headers['x-ratelimit-reset'] ?? '1800000000') / 60000000).toString()} minutes'; | ||||
|         throw RateLimitError( | ||||
|             (int.parse(res.headers['x-ratelimit-reset'] ?? '1800000000') / | ||||
|                     60000000) | ||||
|                 .round()); | ||||
|       } | ||||
|  | ||||
|       throw 'Unable to find user\'s starred repos'; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Future<List<String>> getUrls(List<String> args) async { | ||||
|     if (args.length != requiredArgs.length) { | ||||
|       throw 'Wrong number of arguments provided'; | ||||
|     } | ||||
|     List<String> urls = []; | ||||
|     var page = 1; | ||||
|     while (true) { | ||||
|       var pageUrls = await getOnePageOfUserStarredUrls(args[0], page++); | ||||
|       urls.addAll(pageUrls); | ||||
|       if (pageUrls.length < 100) { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     return urls; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -115,7 +115,7 @@ class SettingsProvider with ChangeNotifier { | ||||
|   } | ||||
|  | ||||
|   bool get showAppWebpage { | ||||
|     return prefs?.getBool('showAppWebpage') ?? true; | ||||
|     return prefs?.getBool('showAppWebpage') ?? false; | ||||
|   } | ||||
|  | ||||
|   set showAppWebpage(bool show) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user