in src/JetBrains.Space.Common/Applications/ApplicationUrlGenerator.cs [93:131]
private static Uri GenerateInstallUrlInternal(
Uri serverUrl,
string applicationName,
Uri applicationEndpoint,
string? state = null,
IEnumerable<SpaceAuthFlow>? authFlows = null,
AuthForMessagesFromSpace authForMessagesFromSpace = AuthForMessagesFromSpace.PublicKeySignature)
{
authFlows ??= new [] { SpaceAuthFlow.ClientCredentials() };
var builder = new UriBuilder(serverUrl);
builder.Query += $"name={Uri.EscapeDataString(applicationName)}";
builder.Query += $"&pair=true";
builder.Query += $"&endpoint={Uri.EscapeDataString(applicationEndpoint.AbsoluteUri)}";
foreach (var authFlow in authFlows)
{
builder.Query += $"&{authFlow}";
}
if (!string.IsNullOrEmpty(state))
{
builder.Query += $"&state={Uri.EscapeDataString(state)}";
}
switch (authForMessagesFromSpace)
{
case AuthForMessagesFromSpace.PublicKeySignature:
builder.Query += "&has-public-key-signature=true";
break;
case AuthForMessagesFromSpace.SigningKey:
builder.Query += "&has-signing-key=true";
break;
default:
throw new ArgumentOutOfRangeException(nameof(authForMessagesFromSpace), authForMessagesFromSpace, "Unknown authentication option");
}
return builder.Uri;
}