def handle_token_expiration()

in modular_cli/modular_cli.py [0:0]


def handle_token_expiration(adapter_sdk: AdapterClient) -> AdapterClient:
    """
    Tries to refresh access token. Returns new adapter client. Can return
    the save object or new object
    """
    at = adapter_sdk.session_token
    if at and not JWTToken(at).is_expired():
        _LOG.debug('Access token has not expired yet. Using it')
        return adapter_sdk
    # no access token or expired
    rt = ConfigurationProvider().refresh_token
    if not rt or JWTToken(rt).is_expired():
        _LOG.debug('Refresh token does not exist or expired. Cannot refresh')
        return adapter_sdk
    resp = adapter_sdk.refresh(rt)
    if not resp.ok:
        _LOG.warning(f'Could not refresh token: {resp.text}')
        return adapter_sdk
    data = resp.json()
    add_data_to_config(name=CONF_ACCESS_TOKEN, value=data.get('jwt'))
    add_data_to_config(name=CONF_REFRESH_TOKEN, value=data.get('refresh_token'))
    return init_configuration()