getVersionInfo method

Future<Map<String, dynamic>?> getVersionInfo(
  1. String packageName,
  2. String version
)

Get detailed information for a specific version of a package.

GET /api/packages/{package}/versions/{version}

Returns {version, pubspec, archive_url, ...}. Returns null on failure.

Implementation

Future<Map<String, dynamic>?> getVersionInfo(
  String packageName,
  String version,
) async {
  final cacheKey = 'pub_version_${packageName}_$version';
  final cached = await _cache.get(cacheKey);
  if (cached != null) return cached;

  try {
    Logger.debug('Fetching version info for $packageName@$version');
    final response = await _http.get(
      '$_baseUrl/packages/$packageName/versions/$version',
    );
    if (!response.isSuccess) {
      Logger.warn(
        'Failed to fetch version info for $packageName@$version: '
        'HTTP ${response.statusCode}',
      );
      return null;
    }

    final data = response.json;
    // Version-specific data is immutable once published, so we can cache it
    // for a long time.
    await _cache.set(cacheKey, data, CacheManager.versionDetailsTtl);
    return data;
  } catch (e, stack) {
    Logger.error(
      'Error fetching version info for $packageName@$version',
      e,
      stack,
    );
    return null;
  }
}