public async Task <IReadOnlyList <Package> > FindPackagesOrNullAsync(string id, CancellationToken cancellationToken) { var items = await _upstreamClient.GetPackageMetadataAsync(id, cancellationToken); if (!items.Any()) { return(null); } var upstreamPackages = items.Select(ToPackage); // Return the upstream packages if there are no local packages matching the package id. var localPackages = await _localPackages.FindAsync(id, includeUnlisted : true); if (!localPackages.Any()) { return(upstreamPackages.ToList()); } // Otherwise, merge the local packages into the upstream packages. var result = upstreamPackages.ToDictionary(p => new PackageIdentity(p.Id, p.Version)); var local = localPackages.ToDictionary(p => new PackageIdentity(p.Id, p.Version)); foreach (var localPackage in local) { result[localPackage.Key] = localPackage.Value; } return(result.Values.ToList()); }
public async Task <IReadOnlyList <Package> > FindPackagesOrNullAsync(string id, CancellationToken cancellationToken) { var items = await _upstreamClient.GetPackageMetadataAsync(id, cancellationToken); if (!items.Any()) { return(null); } return(items.Select(ToPackage).ToList()); }
public async Task <IReadOnlyList <PackageMetadata> > GetPackageMetadataAsync( string id, CancellationToken cancellationToken) { try { return(await _client.GetPackageMetadataAsync(id, cancellationToken)); } catch (Exception e) { _logger.LogError(e, "Failed to mirror {PackageId}'s upstream metadata", id); return(new List <PackageMetadata>()); } }
public async Task <IReadOnlyList <Package> > ListPackagesAsync( string id, CancellationToken cancellationToken) { try { var packages = await _client.GetPackageMetadataAsync(id, cancellationToken); return(packages.Select(ToPackage).ToList()); } catch (Exception e) { _logger.LogError(e, "Failed to mirror {PackageId}'s upstream metadata", id); return(new List <Package>()); } }
public async Task <IReadOnlyList <PackageMetadata> > GetPackageMetadataAsync(string id, CancellationToken cancellationToken) { return(await _client.GetPackageMetadataAsync(id, cancellationToken)); }