nuget-extensions/nuget-plugin/RequestHandlers/GetAuthenticationCredentialsRequestHandler.cs (45 lines of code) (raw):

using System; using System.Threading.Tasks; using NuGet.Common; using NuGet.Protocol.Plugins; using ILogger = JetBrains.TeamCity.NuGet.Logging.ILogger; namespace JetBrains.TeamCity.NuGet.RequestHandlers { /// <summary> /// Handles a <see cref="GetAuthenticationCredentialsRequest"/> and replies with credentials. /// </summary> internal class GetAuthenticationCredentialsRequestHandler : RequestHandlerBase<GetAuthenticationCredentialsRequest, GetAuthenticationCredentialsResponse> { private readonly ICredentialProvider _credentialProvider; /// <summary> /// Initializes a new instance of the <see cref="GetAuthenticationCredentialsRequestHandler"/> class. /// </summary> /// <param name="logger">A <see cref="ILogger"/> to use for logging.</param> /// <param name="credentialProvider">An <see cref="ICredentialProvider"/> containing credential provider.</param> public GetAuthenticationCredentialsRequestHandler(ILogger logger, ICredentialProvider credentialProvider) : base(logger) { _credentialProvider = credentialProvider ?? throw new ArgumentNullException(nameof(credentialProvider)); } public override Task<GetAuthenticationCredentialsResponse> HandleRequestAsync(GetAuthenticationCredentialsRequest request) { try { var response = _credentialProvider.HandleRequest(request); if (response != null && response.ResponseCode == MessageResponseCode.Success) { return Task.FromResult(response); } } catch (Exception e) { Logger.Log(LogLevel.Error, $"Failed to acquire credentials: {e}"); return Task.FromResult(new GetAuthenticationCredentialsResponse( username: null, password: null, message: e.Message, authenticationTypes: null, responseCode: MessageResponseCode.Error)); } return Task.FromResult(new GetAuthenticationCredentialsResponse( username: null, password: null, message: null, authenticationTypes: null, responseCode: MessageResponseCode.NotFound)); } } }