| File: Definitions\IPackageDownloader.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Packaging\NuGet.Packaging.csproj (NuGet.Packaging) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Threading; using System.Threading.Tasks; using NuGet.Packaging.Core; using NuGet.Packaging.Signing; namespace NuGet.Packaging { /// <summary> /// A package downloader. /// </summary> public interface IPackageDownloader : IDisposable { /// <summary> /// Gets an asynchronous package content reader. /// </summary> /// <exception cref="ObjectDisposedException">Thrown if this object is disposed.</exception> IAsyncPackageContentReader ContentReader { get; } /// <summary> /// Gets an asynchronous package core reader. /// </summary> /// <exception cref="ObjectDisposedException">Thrown if this object is disposed.</exception> IAsyncPackageCoreReader CoreReader { get; } ISignedPackageReader SignedPackageReader { get; } string Source { get; } /// <summary> /// Asynchronously copies a .nupkg to a target file path. /// </summary> /// <param name="destinationFilePath">The destination file path.</param> /// <param name="cancellationToken">A cancellation token.</param> /// <returns>A task that represents the asynchronous operation. /// The task result (<see cref="Task{TResult}.Result" />) returns a <see cref="bool" /> /// indicating whether or not the copy was successful.</returns> /// <exception cref="ObjectDisposedException">Thrown if this object is disposed.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="destinationFilePath" /> /// is either <see langword="null" /> or empty.</exception> /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken" /> /// is cancelled.</exception> Task<bool> CopyNupkgFileToAsync(string destinationFilePath, CancellationToken cancellationToken); /// <summary> /// Asynchronously gets a package hash. /// </summary> /// <param name="hashAlgorithm">The hash algorithm.</param> /// <param name="cancellationToken">A cancellation token.</param> /// <returns>A task that represents the asynchronous operation. /// The task result (<see cref="Task{TResult}.Result" />) returns a <see cref="string" /> /// representing the package hash.</returns> /// <exception cref="ObjectDisposedException">Thrown if this object is disposed.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="hashAlgorithm" /> /// is either <see langword="null" /> or empty.</exception> /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken" /> /// is cancelled.</exception> Task<string> GetPackageHashAsync(string hashAlgorithm, CancellationToken cancellationToken); /// <summary> /// Sets an exception handler for package downloads. /// </summary> /// <remarks>The exception handler returns a task that represents the asynchronous operation. /// The task result (<see cref="Task{TResult}.Result" />) returns a <see cref="bool" /> /// indicating whether or not the exception was handled. To handle an exception and stop its /// propagation, the task should return <see langword="true" />. Otherwise, the exception will be rethrown.</remarks> /// <param name="handleExceptionAsync">An exception handler.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="handleExceptionAsync" /> /// is <see langword="null" />.</exception> void SetExceptionHandler(Func<Exception, Task<bool>> handleExceptionAsync); /// <summary> /// Sets a throttle for package downloads. /// </summary> /// <param name="throttle">A throttle. Can be <see langword="null" />.</param> void SetThrottle(SemaphoreSlim? throttle); } }