| File: SecurePluginCredentialProviderBuilder.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Credentials\NuGet.Credentials.csproj (NuGet.Credentials) |
// 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. #nullable disable using System; using System.Collections.Generic; using System.Globalization; using System.Threading; using System.Threading.Tasks; using NuGet.Protocol.Plugins; namespace NuGet.Credentials { /// <summary> /// Builder for credential providers that are based on the secure plugin model (Version 2.0.0) /// </summary> public class SecurePluginCredentialProviderBuilder { private readonly Common.ILogger _logger; private readonly IPluginManager _pluginManager; private readonly bool _canShowDialog; /// <summary> /// Create a credential provider builders /// </summary> /// <param name="pluginManager">pluginManager</param> /// <param name="canShowDialog">canShowDialog - whether can pop up a dialog or it needs to use device flow</param> /// <param name="logger">logger</param> /// <exception cref="ArgumentNullException">if <paramref name="logger"/> is null</exception> /// <exception cref="ArgumentNullException">if <paramref name="pluginManager"/> is null</exception> public SecurePluginCredentialProviderBuilder(IPluginManager pluginManager, bool canShowDialog, Common.ILogger logger) { _pluginManager = pluginManager ?? throw new ArgumentNullException(nameof(pluginManager)); _canShowDialog = canShowDialog; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// <summary> /// Creates credential providers for each valid plugin (regardless if it supports authentication or not) /// </summary> /// <returns>credential providers</returns> public async Task<IEnumerable<ICredentialProvider>> BuildAllAsync() { var availablePlugins = await _pluginManager.FindAvailablePluginsAsync(CancellationToken.None); var plugins = new List<ICredentialProvider>(); foreach (var pluginDiscoveryResult in availablePlugins) { _logger.LogDebug(string.Format(CultureInfo.CurrentCulture, Resources.SecurePluginNotice_UsingPluginAsProvider, pluginDiscoveryResult.PluginFile.Path)); plugins.Add(new SecurePluginCredentialProvider(_pluginManager, pluginDiscoveryResult, _canShowDialog, _logger)); } return plugins; } } }