getPublishedVersionsForPackage function
Future<List<Version>>
getPublishedVersionsForPackage(
- String packageName, {
- Uri? publishedTo,
})
Implementation
Future<List<Version>> getPublishedVersionsForPackage(String packageName,
{Uri? publishedTo}) async {
if (publishedTo == null || publishedTo == noneUrl) {
publishedTo = pubUrl;
}
if (!publishedTo.path.endsWith('/')) {
publishedTo = Uri.parse('$publishedTo/');
}
final url = publishedTo.resolve('api/packages/$packageName');
final response = await http.get(url);
if (response.statusCode == 404) {
// The package was never published
return const [];
} else if (response.statusCode != 200) {
throw DartBomException(
'Error reading pub.dev registry for package "$packageName" '
'(HTTP Status ${response.statusCode}), response: ${response.body}',
3);
}
final versions = <Version>[];
var jsonBody = json.decode(response.body);
final versionsRaw = (jsonBody['versions'] as List);
for (final versionElement in versionsRaw) {
versions.add(Version.parse(versionElement['version'] as String));
}
versions.sort((Version a, Version b) {
return Version.prioritize(a, b);
});
return versions.reversed.toList();
}