getPublishedVersions method
Queries the pub.dev registry for published versions of this package. Primarily used for publish filters and versioning.
Implementation
Future<List<String>> getPublishedVersions() async {
if (isPrivate) {
return [];
}
final pubHosted = publishTo ?? pubUrl;
final url = pubHosted.replace(path: '/packages/$name.json');
final response = await http.get(url);
if (response.statusCode == 404) {
// The package was never published
return [];
} else if (response.statusCode != 200) {
throw Exception(
'Error reading pub.dev registry for package "$name" '
'(HTTP Status ${response.statusCode}), response: ${response.body}',
);
}
final versions = <String>[];
final versionsRaw =
(json.decode(response.body) as Map)['versions'] as List<Object?>;
for (final versionElement in versionsRaw) {
versions.add(versionElement! as String);
}
versions.sort((String a, String b) {
return Version.prioritize(Version.parse(a), Version.parse(b));
});
return versions.reversed.toList();
}