public async Task <Stream> DownloadPackageOrNullAsync( string id, NuGetVersion version, CancellationToken cancellationToken) { try { using (var downloadStream = await _client.DownloadPackageAsync(id, version, cancellationToken)) { return(await downloadStream.AsTemporaryFileStreamAsync(cancellationToken)); } } catch (PackageNotFoundException) { return(null); } catch (Exception e) { _logger.LogError( e, "Failed to download {PackageId} {PackageVersion} from upstream", id, version); return(null); } }
private async Task IndexFromSourceAsync(string id, NuGetVersion version, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); _logger.LogInformation( "Attempting to mirror package {PackageId} {PackageVersion}...", id, version); Stream packageStream = null; try { using (var stream = await _upstreamClient.DownloadPackageAsync(id, version, cancellationToken)) { packageStream = await stream.AsTemporaryFileStreamAsync(); } _logger.LogInformation( "Downloaded package {PackageId} {PackageVersion}, indexing...", id, version); var result = await _indexer.IndexAsync(packageStream, cancellationToken); _logger.LogInformation( "Finished indexing package {PackageId} {PackageVersion} with result {Result}", id, version, result); } catch (PackageNotFoundException) { _logger.LogWarning( "Failed to download package {PackageId} {PackageVersion}", id, version); return; } catch (Exception e) { _logger.LogError( e, "Failed to mirror package {PackageId} {PackageVersion}", id, version); } finally { packageStream?.Dispose(); } }
public async Task <Stream> DownloadPackageAsync(string id, NuGetVersion version, CancellationToken cancellationToken) { return(await _client.DownloadPackageAsync(id, version, cancellationToken)); }