getPackageInfo method

Future<Map<String, dynamic>> getPackageInfo(
  1. String packageName
)

Get full package info from pub.dev.

GET /api/packages/{package}

Returns the full JSON response including name, latest (with version and pubspec), and versions (list of all published versions).

Throws on non-2xx responses because downstream callers depend on this data being available.

Implementation

Future<Map<String, dynamic>> getPackageInfo(String packageName) async {
  final cacheKey = 'pub_package_$packageName';
  final cached = await _cache.get(cacheKey);
  if (cached != null) return cached;

  Logger.debug('Fetching package info for $packageName from pub.dev');
  final response = await _http.get('$_baseUrl/packages/$packageName');
  if (!response.isSuccess) {
    throw Exception(
      'Failed to fetch package info for $packageName: '
      'HTTP ${response.statusCode}',
    );
  }

  final data = response.json;
  await _cache.set(cacheKey, data, CacheManager.packageMetadataTtl);
  return data;
}