private static Uri GenerateInstallUrlInternal()

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;
    }