/// <summary> /// Asynchronously gets a package downloader for a package identity. /// </summary> /// <param name="packageIdentity">A package identity.</param> /// <param name="cacheContext">A source cache context.</param> /// <param name="logger">A logger.</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 an <see cref="IPackageDownloader" />.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="packageIdentity" /> <c>null</c>.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="cacheContext" /> <c>null</c>.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="logger" /> <c>null</c>.</exception> /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken" /> /// is cancelled.</exception> public override Task <IPackageDownloader> GetPackageDownloaderAsync( PackageIdentity packageIdentity, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) { if (packageIdentity == null) { throw new ArgumentNullException(nameof(packageIdentity)); } if (cacheContext == null) { throw new ArgumentNullException(nameof(cacheContext)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } cancellationToken.ThrowIfCancellationRequested(); var packageReader = new PluginPackageReader(_plugin, packageIdentity, _packageSource.Source); var packageDependency = new PluginPackageDownloader(_plugin, packageIdentity, packageReader, _packageSource.Source); return(Task.FromResult <IPackageDownloader>(packageDependency)); }
private PluginPackageDownloaderTest( PackageIdentity packageIdentity, Mock <IPlugin> plugin, PluginPackageReader packageReader, PluginPackageDownloader downloader) { PackageIdentity = packageIdentity; Plugin = plugin; PackageReader = packageReader; Downloader = downloader; }
internal static PluginPackageDownloaderTest Create() { var plugin = new Mock <IPlugin>(MockBehavior.Strict); plugin.Setup(x => x.Dispose()); var packageReader = new PluginPackageReader(plugin.Object, _packageIdentity, _packageSourceRepository); var downloader = new PluginPackageDownloader( plugin.Object, _packageIdentity, packageReader, _packageSourceRepository); return(new PluginPackageDownloaderTest( _packageIdentity, plugin, packageReader, downloader)); }
/// <summary> /// Asynchronously gets a package downloader for a package identity. /// </summary> /// <param name="packageIdentity">A package identity.</param> /// <param name="cacheContext">A source cache context.</param> /// <param name="logger">A logger.</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 an <see cref="IPackageDownloader" />.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="packageIdentity" /> <c>null</c>.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="cacheContext" /> <c>null</c>.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="logger" /> <c>null</c>.</exception> /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken" /> /// is cancelled.</exception> public override Task <IPackageDownloader> GetPackageDownloaderAsync( PackageIdentity packageIdentity, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) { if (packageIdentity == null) { throw new ArgumentNullException(nameof(packageIdentity)); } if (cacheContext == null) { throw new ArgumentNullException(nameof(cacheContext)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } var stopwatch = Stopwatch.StartNew(); try { cancellationToken.ThrowIfCancellationRequested(); var packageReader = new PluginPackageReader(_plugin, packageIdentity, _packageSource.Source); var packageDependency = new PluginPackageDownloader(_plugin, packageIdentity, packageReader, _packageSource.Source); return(Task.FromResult <IPackageDownloader>(packageDependency)); } finally { ProtocolDiagnostics.RaiseEvent(new ProtocolDiagnosticResourceEvent( _packageSource.Source, ResourceTypeName, ThisTypeName, nameof(GetPackageDownloaderAsync), stopwatch.Elapsed)); } }