MyGetMirror.NuGetPackageExistenceChecker.SymbolsPackageExistsAsync C# (CSharp) Method

SymbolsPackageExistsAsync() public method

public SymbolsPackageExistsAsync ( PackageIdentity identity, CancellationToken token ) : Task
identity PackageIdentity
token System.Threading.CancellationToken
return Task
        public async Task<bool> SymbolsPackageExistsAsync(PackageIdentity identity, CancellationToken token)
        {
            return await _symbolsPackageDownloader.IsAvailableAsync(identity, token);
        }
    }

Usage Example

Esempio n. 1
0
        public async Task <bool> MirrorAsync(PackageIdentity identity, CancellationToken token)
        {
            // Publish the package itself.
            var publishPackage = true;

            if (!_overwriteExisting)
            {
                publishPackage = !(await _existenceChecker.PackageExistsAsync(identity, token));
            }

            if (publishPackage)
            {
                var downloadResult = await _sourceDownloadResource.GetDownloadResourceResultAsync(
                    identity,
                    _settings,
                    _logger,
                    token);

                using (downloadResult)
                {
                    if (downloadResult.Status != DownloadResourceResultStatus.Available)
                    {
                        throw new InvalidOperationException($"The NuGet package '{identity}' is not available on the source.");
                    }

                    await _packagePusher.PushAsync(downloadResult.PackageStream, token);
                }
            }

            // Publish the symbols package.
            var publishSymbolsPackage = _includeSymbols;

            if (!_overwriteExisting)
            {
                publishSymbolsPackage = !(await _existenceChecker.SymbolsPackageExistsAsync(identity, token));
            }

            if (publishSymbolsPackage)
            {
                publishSymbolsPackage = await _symbolsPackageDownloader.ProcessAsync(
                    identity,
                    async streamResult =>
                {
                    if (!streamResult.IsAvailable)
                    {
                        // The package has no symbols package.
                        return(false);
                    }

                    await _packagePusher.PushAsync(streamResult.Stream, token);

                    return(true);
                },
                    token);
            }

            return(publishPackage || publishSymbolsPackage);
        }