mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-16 22:56:44 +02:00
Extract GitLab Asset Filenames (#2127)
This commit is contained in:
@ -163,12 +163,18 @@ 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)')
|
||||||
@ -176,16 +182,20 @@ class GitLab extends AppSource {
|
|||||||
.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