getVersions method

Future<List<PubVersionInfo>> getVersions(
  1. String packageName
)

Fetch all versions of a package.

Implementation

Future<List<PubVersionInfo>> getVersions(String packageName) async {
  final url = Uri.parse('$registryUrl/api/packages/$packageName');
  final response = await _http.get(url);
  if (response.statusCode != 200) {
    throw StateError(
      'Failed to fetch package "$packageName" from $registryUrl: '
      '${response.statusCode} ${response.reasonPhrase}',
    );
  }
  final data = jsonDecode(response.body) as Map<String, dynamic>;
  final versions = data['versions'] as List<dynamic>? ?? [];
  return versions.map((v) {
    final map = v as Map<String, dynamic>;
    return PubVersionInfo(
      version: map['version'] as String,
      archiveUrl:
          map['archive_url'] as String? ??
          '$registryUrl/api/packages/$packageName/versions/${map['version']}/archive',
    );
  }).toList();
}