Пример #1
0
def refresh_access_token(credential):
    """Use a refresh token to request a new access token.

    Not suported for access tokens obtained via Implicit Grant.

    Parameters
        credential (OAuth2Credential)
            An authorized user's OAuth 2.0 credentials.

    Returns
        (Session)
            A new Session object with refreshed OAuth 2.0 credentials.

    Raises
        UberIllegalState (APIError)
            Raised if OAuth 2.0 grant type does not support
            refresh tokens.
    """
    if credential.grant_type == auth.AUTHORIZATION_CODE_GRANT:
        response = _request_access_token(
            grant_type=auth.REFRESH_TOKEN,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            redirect_url=credential.redirect_url,
            refresh_token=credential.refresh_token,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=credential.grant_type,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            redirect_url=credential.redirect_url,
        )

        return Session(oauth2credential=oauth2credential)

    elif credential.grant_type == auth.CLIENT_CREDENTIAL_GRANT:
        response = _request_access_token(
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            scopes=credential.scopes,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=credential.grant_type,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
        )

        return Session(oauth2credential=oauth2credential)

    message = '{} Grant Type does not support Refresh Tokens.'
    message = message.format(credential.grant_type)
    raise UberIllegalState(message)
Пример #2
0
def refresh_access_token(credential):
    """Use a refresh token to request a new access token.

    Not suported for access tokens obtained via Implicit Grant.

    Parameters
        credential (OAuth2Credential)
            An authorized user's OAuth 2.0 credentials.

    Returns
        (Session)
            A new Session object with refreshed OAuth 2.0 credentials.

    Raises
        UberIllegalState (APIError)
            Raised if OAuth 2.0 grant type does not support
            refresh tokens.
    """
    if credential.grant_type == auth.AUTHORIZATION_CODE_GRANT:
        response = _request_access_token(
            grant_type=auth.REFRESH_TOKEN,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            redirect_url=credential.redirect_url,
            refresh_token=credential.refresh_token,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=credential.grant_type,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            redirect_url=credential.redirect_url,
        )

        return Session(oauth2credential=oauth2credential)

    elif credential.grant_type == auth.CLIENT_CREDENTIAL_GRANT:
        response = _request_access_token(
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
            scopes=credential.scopes,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=credential.grant_type,
            client_id=credential.client_id,
            client_secret=credential.client_secret,
        )

        return Session(oauth2credential=oauth2credential)

    message = '{} Grant Type does not support Refresh Tokens.'
    message = message.format(credential.grant_type)
    raise UberIllegalState(message)
Пример #3
0
def test_make_session_from_client_credentials_response(
    client_credentials_response, ):
    """Test classmethod to build OAuth2Credential from HTTP Response."""
    oauth2credential = OAuth2Credential.make_from_response(
        response=client_credentials_response,
        grant_type=auth.CLIENT_CREDENTIAL_GRANT,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
    )

    assert oauth2credential.access_token == ACCESS_TOKEN
    assert oauth2credential.scopes == SCOPES_SET
    assert oauth2credential.grant_type == auth.CLIENT_CREDENTIAL_GRANT
    assert oauth2credential.refresh_token is None
    assert oauth2credential.client_id == CLIENT_ID
    assert oauth2credential.client_secret == CLIENT_SECRET
    assert oauth2credential.redirect_url is None
Пример #4
0
def test_make_session_from_authorization_code_response(
    authorization_code_response, ):
    """Test classmethod to build OAuth2Credential from HTTP Response."""
    oauth2credential = OAuth2Credential.make_from_response(
        response=authorization_code_response,
        grant_type=auth.AUTHORIZATION_CODE_GRANT,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
        redirect_url=REDIRECT_URL,
    )

    assert oauth2credential.access_token == ACCESS_TOKEN
    assert oauth2credential.scopes == SCOPES_SET
    assert oauth2credential.grant_type == auth.AUTHORIZATION_CODE_GRANT
    assert oauth2credential.refresh_token == REFRESH_TOKEN
    assert oauth2credential.client_id == CLIENT_ID
    assert oauth2credential.client_secret == CLIENT_SECRET
    assert oauth2credential.redirect_url == REDIRECT_URL
Пример #5
0
def test_make_session_from_client_credentials_response(
    client_credentials_response,
):
    """Test classmethod to build OAuth2Credential from HTTP Response."""
    oauth2credential = OAuth2Credential.make_from_response(
        response=client_credentials_response,
        grant_type=auth.CLIENT_CREDENTIAL_GRANT,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
    )

    assert oauth2credential.access_token == ACCESS_TOKEN
    assert oauth2credential.scopes == CLIENT_CREDENTIALS_SCOPES_SET
    assert oauth2credential.grant_type == auth.CLIENT_CREDENTIAL_GRANT
    assert oauth2credential.refresh_token is None
    assert oauth2credential.client_id == CLIENT_ID
    assert oauth2credential.client_secret == CLIENT_SECRET
    assert oauth2credential.redirect_url is None
Пример #6
0
def test_make_session_from_authorization_code_response(
    authorization_code_response,
):
    """Test classmethod to build OAuth2Credential from HTTP Response."""
    oauth2credential = OAuth2Credential.make_from_response(
        response=authorization_code_response,
        grant_type=auth.AUTHORIZATION_CODE_GRANT,
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
        redirect_url=REDIRECT_URL,
    )

    assert oauth2credential.access_token == ACCESS_TOKEN
    assert oauth2credential.scopes == SCOPES_SET
    assert oauth2credential.grant_type == auth.AUTHORIZATION_CODE_GRANT
    assert oauth2credential.refresh_token == REFRESH_TOKEN
    assert oauth2credential.client_id == CLIENT_ID
    assert oauth2credential.client_secret == CLIENT_SECRET
    assert oauth2credential.redirect_url == REDIRECT_URL
Пример #7
0
    def get_session(self):
        """Create Session to store credentials.

        Returns
            (Session)
                A Session object with OAuth 2.0 credentials.
        """
        response = _request_access_token(
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            scopes=self.scopes,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
        )

        return Session(oauth2credential=oauth2credential)
Пример #8
0
    def get_session(self):
        """Create Session to store credentials.

        Returns
            (Session)
                A Session object with OAuth 2.0 credentials.
        """
        response = _request_access_token(
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            scopes=self.scopes,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=auth.CLIENT_CREDENTIAL_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
        )

        return Session(oauth2credential=oauth2credential)
Пример #9
0
    def get_session(self, redirect_url):
        """Complete the Authorization Code Grant process.

        The redirect URL received after the user has authorized
        your application contains an authorization code. Use this
        authorization code to request an access token.

        Parameters
            redirect_url (str)
                The full URL that the Uber server redirected to after
                the user authorized your app.

        Returns
            (Session)
                A Session object with OAuth 2.0 credentials.
        """
        query_params = self._extract_query(redirect_url)
        authorization_code = self._verify_query(query_params)

        response = _request_access_token(
            grant_type=auth.AUTHORIZATION_CODE_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            code=authorization_code,
            redirect_url=self.redirect_url,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=auth.AUTHORIZATION_CODE_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            redirect_url=self.redirect_url,
        )

        return Session(oauth2credential=oauth2credential)
Пример #10
0
    def get_session(self, redirect_url):
        """Complete the Authorization Code Grant process.

        The redirect URL received after the user has authorized
        your application contains an authorization code. Use this
        authorization code to request an access token.

        Parameters
            redirect_url (str)
                The full URL that the Uber server redirected to after
                the user authorized your app.

        Returns
            (Session)
                A Session object with OAuth 2.0 credentials.
        """
        query_params = self._extract_query(redirect_url)
        authorization_code = self._verify_query(query_params)

        response = _request_access_token(
            grant_type=auth.AUTHORIZATION_CODE_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            code=authorization_code,
            redirect_url=self.redirect_url,
        )

        oauth2credential = OAuth2Credential.make_from_response(
            response=response,
            grant_type=auth.AUTHORIZATION_CODE_GRANT,
            client_id=self.client_id,
            client_secret=self.client_secret,
            redirect_url=self.redirect_url,
        )

        return Session(oauth2credential=oauth2credential)