/// <summary> /// Asynchronously attempts to create a resource for the specified source repository. /// </summary> /// <param name="source">A source repository.</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 Tuple<bool, INuGetResource></returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="source"/> is <c>null</c>.</exception> /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken"/> /// is cancelled.</exception> public override async Task <Tuple <bool, INuGetResource> > TryCreate( SourceRepository source, CancellationToken cancellationToken) { if (source == null) { throw new ArgumentNullException(nameof(source)); } cancellationToken.ThrowIfCancellationRequested(); PluginResource resource = null; var pluginCreationResults = await _pluginManager.CreatePluginsAsync(source, cancellationToken); if (pluginCreationResults != null && pluginCreationResults.Any()) { resource = new PluginResource( pluginCreationResults, source.PackageSource, HttpHandlerResourceV3.CredentialService?.Value); } return(new Tuple <bool, INuGetResource>(resource != null, resource)); }