in nuget-extensions/nuget-plugin/Program.cs [50:128]
private static async Task<int> MainInternal(CancellationTokenSource tokenSource, MultiLogger multiLogger, string[] args)
{
var credentialProvider = new TeamCityCredentialProvider(multiLogger);
var sdkInfo = new SdkInfo();
var requestHandlers = new RequestHandlerCollection
{
{
MessageMethod.GetAuthenticationCredentials,
new GetAuthenticationCredentialsRequestHandler(multiLogger, credentialProvider)
},
{
MessageMethod.GetOperationClaims,
new GetOperationClaimsRequestHandler(multiLogger, credentialProvider, sdkInfo)
},
{
MessageMethod.SetLogLevel,
new SetLogLevelHandler(multiLogger)
},
{
MessageMethod.Initialize,
new InitializeRequestHandler(multiLogger)
},
{
MessageMethod.SetCredentials,
new SetCredentialsRequestHandler(multiLogger)
}
};
if (String.Equals(args.SingleOrDefault(), "-plugin", StringComparison.OrdinalIgnoreCase))
{
multiLogger.Log(LogLevel.Verbose, "Running in plug-in mode");
try
{
using (IPlugin plugin = await PluginFactory
.CreateFromCurrentProcessAsync(requestHandlers, ConnectionOptions.CreateDefault(), CancellationToken.None)
.ConfigureAwait(continueOnCapturedContext: false))
{
multiLogger.Add(new PluginConnectionLogger(plugin.Connection));
await RunNuGetPluginsAsync(plugin, multiLogger, tokenSource.Token).ConfigureAwait(continueOnCapturedContext: false);
}
}
catch (OperationCanceledException e)
{
// Multiple source restoration. Request will be cancelled if a package has been successfully restored from another source
multiLogger.Log(LogLevel.Verbose, $"Request to credential provider was cancelled. Message: {e.Message}");
}
return 0;
}
if (requestHandlers.TryGet(MessageMethod.GetAuthenticationCredentials, out IRequestHandler requestHandler) &&
requestHandler is GetAuthenticationCredentialsRequestHandler getAuthenticationCredentialsRequestHandler)
{
multiLogger.Log(LogLevel.Verbose, "Running in stand-alone mode");
if (args.Length == 0)
{
Console.WriteLine("Usage: CredentialProvider.TeamCity.exe <NuGetFeedUrl>");
return 1;
}
var request = new GetAuthenticationCredentialsRequest(
uri: new Uri(args[0]),
isRetry: false,
isNonInteractive: true,
canShowDialog: false
);
var response = getAuthenticationCredentialsRequestHandler.HandleRequestAsync(request).GetAwaiter().GetResult();
Console.WriteLine(response?.Username);
Console.WriteLine(response?.Password);
Console.WriteLine(response?.Password.ToJsonWebTokenString());
return 0;
}
return -1;
}