resolveRemote method
By default, a generic PubEntry does not fetch a resolved URL.
Implementation
@override
Future resolveRemote() async {
String? hostedUrl = description?.url;
final String pkgName = name;
if (hostedUrl == null) {
return;
}
// Remove any trailing slash
hostedUrl = hostedUrl.endsWith('/')
? hostedUrl.substring(0, hostedUrl.length - 1)
: hostedUrl;
final requestUrl = '$hostedUrl/api/packages/$pkgName';
final urlParsed = Uri.parse(requestUrl);
try {
final response = await http.get(urlParsed);
if (response.statusCode != 200) {
throw HttpException('HTTP error: ${response.statusCode}');
}
final pubPackageJson = json.decode(response.body) as Map<String, dynamic>;
for (var verPkg in pubPackageJson['versions'] as List<dynamic>) {
final versionData = verPkg as Map<String, dynamic>;
if (versionData['version'] == version) {
_resolvedUrl = versionData['archive_url'] as String;
_resolvedSha256 = versionData['archive_sha256'] as String?;
break;
}
}
} catch (e) {
print("Error fetching package[$pkgName] data: $e");
}
}