mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 13:03:28 +01:00 
			
		
		
		
	Extract GitLab Asset Filenames (#2127)
This commit is contained in:
		| @@ -163,29 +163,39 @@ class GitLab extends AppSource { | |||||||
|     apkDetailsList = json.map((e) { |     apkDetailsList = json.map((e) { | ||||||
|       var apkUrlsFromAssets = (e['assets']?['links'] as List<dynamic>? ?? []) |       var apkUrlsFromAssets = (e['assets']?['links'] as List<dynamic>? ?? []) | ||||||
|           .map((e) { |           .map((e) { | ||||||
|             return (e['direct_asset_url'] ?? e['url'] ?? '') as String; |             var url = (e['direct_asset_url'] ?? e['url'] ?? '') as String; | ||||||
|  |             var parsedUrl = url.isNotEmpty ? Uri.parse(url) : null; | ||||||
|  |             return MapEntry( | ||||||
|  |                 (e['name'] ?? | ||||||
|  |                     (parsedUrl != null && parsedUrl.pathSegments.isNotEmpty | ||||||
|  |                         ? parsedUrl.pathSegments.last | ||||||
|  |                         : 'unknown')) as String, | ||||||
|  |                 (e['direct_asset_url'] ?? e['url'] ?? '') as String); | ||||||
|           }) |           }) | ||||||
|           .where((s) => s.isNotEmpty) |           .where((s) => s.key.isNotEmpty) | ||||||
|           .toList(); |           .toList(); | ||||||
|       List<String> uploadedAPKsFromDescription = |       var uploadedAPKsFromDescription = ((e['description'] ?? '') as String) | ||||||
|           ((e['description'] ?? '') as String) |           .split('](') | ||||||
|               .split('](') |           .join('\n') | ||||||
|               .join('\n') |           .split('.apk)') | ||||||
|               .split('.apk)') |           .join('.apk\n') | ||||||
|               .join('.apk\n') |           .split('\n') | ||||||
|               .split('\n') |           .where((s) => s.startsWith('/uploads/') && s.endsWith('apk')) | ||||||
|               .where((s) => s.startsWith('/uploads/') && s.endsWith('apk')) |           .map((s) => 'https://${hosts[0]}/-/project/$projectId$s') | ||||||
|               .map((s) => 'https://${hosts[0]}/-/project/$projectId$s') |           .map((l) => MapEntry(Uri.parse(l).pathSegments.last, l)) | ||||||
|               .toList(); |           .toList(); | ||||||
|       var apkUrlsSet = apkUrlsFromAssets.toSet(); |       Map<String, String> apkUrls = {}; | ||||||
|       apkUrlsSet.addAll(uploadedAPKsFromDescription); |       for (var entry in apkUrlsFromAssets) { | ||||||
|  |         apkUrls[entry.key] = entry.value; | ||||||
|  |       } | ||||||
|  |       for (var entry in uploadedAPKsFromDescription) { | ||||||
|  |         apkUrls[entry.key] = entry.value; | ||||||
|  |       } | ||||||
|       var releaseDateString = |       var releaseDateString = | ||||||
|           e['released_at'] ?? e['created_at'] ?? e['commit']?['created_at']; |           e['released_at'] ?? e['created_at'] ?? e['commit']?['created_at']; | ||||||
|       DateTime? releaseDate = |       DateTime? releaseDate = | ||||||
|           releaseDateString != null ? DateTime.parse(releaseDateString) : null; |           releaseDateString != null ? DateTime.parse(releaseDateString) : null; | ||||||
|       return APKDetails( |       return APKDetails(e['tag_name'] ?? e['name'], apkUrls.entries.toList(), | ||||||
|           e['tag_name'] ?? e['name'], |  | ||||||
|           getApkUrlsFromUrls(apkUrlsSet.toList()), |  | ||||||
|           AppNames(names.author, names.name.split('/').last), |           AppNames(names.author, names.name.split('/').last), | ||||||
|           releaseDate: releaseDate); |           releaseDate: releaseDate); | ||||||
|     }); |     }); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user