static URI createAuthorizationEndpointUri()

in core/src/main/java/com/microsoft/alm/auth/oauth/AzureAuthority.java [84:131]


    static URI createAuthorizationEndpointUri(final String authorityHostUrl, final String resource, final String clientId,
                                               final URI redirectUri, final UserIdentifier userId, final String state,
                                               final PromptBehavior promptBehavior, final String queryParameters) {
        final QueryString qs = new QueryString();
        qs.put(OAuthParameter.RESOURCE, resource);
        qs.put(OAuthParameter.CLIENT_ID, clientId);
        qs.put(OAuthParameter.RESPONSE_TYPE, OAuthParameter.CODE);
        qs.put(OAuthParameter.REDIRECT_URI, redirectUri.toString());

        if (!userId.isAnyUser()
                && (userId.getType() == UserIdentifierType.OPTIONAL_DISPLAYABLE_ID
                || userId.getType() == UserIdentifierType.REQUIRED_DISPLAYABLE_ID)) {
            qs.put(OAuthParameter.LOGIN_HINT, userId.getId());
        }

        if (state != null) {
            qs.put(OAuthParameter.STATE, state);
        }

        String promptValue = null;
        switch (promptBehavior) {
            case ALWAYS:
                promptValue = PromptValue.LOGIN;
                break;
            case NEVER:
                promptValue = PromptValue.ATTEMPT_NONE;
                break;
        }
        if (promptValue != null) {
            qs.put(OAuthParameter.PROMPT, promptValue);
        }

        final StringBuilder sb = new StringBuilder(authorityHostUrl);
        sb.append("/oauth2/authorize?");
        sb.append(qs.toString());
        if (!StringHelper.isNullOrWhiteSpace(queryParameters)) {
            // TODO: 449282: ADAL.NET checks if queryParameters contains any duplicate parameters
            int start = (queryParameters.charAt(0) == '&') ? 1 : 0;
            sb.append('&').append(queryParameters, start, queryParameters.length());
        }
        final URI result;
        try {
            result = new URI(sb.toString());
        } catch (final URISyntaxException e) {
            throw new Error(e);
        }
        return result;
    }