def test_token_refresh(): update_called = [] # hacky way to test side effect def token_updater(token): update_called.append(1) client = OuraClient(client_id="test_id", access_token="token", refresh_callback=token_updater) adapter.register_uri( requests_mock.POST, requests_mock.ANY, status_code=401, text=json.dumps({ "access_token": "fake_return_access_token", "refresh_token": "fake_return_refresh_token", }), ) adapter.register_uri( requests_mock.GET, requests_mock.ANY, status_code=401, text=json.dumps({"a": "b"}), ) client._auth_handler._session.mount(client.API_ENDPOINT, adapter) try: client.user_info() except Exception: pass assert len(update_called) == 1
def test_token_refresh(): update_called = [] # hacky way to test side effect def token_updater(token): update_called.append(1) client = OuraClient('test_id', access_token='token', refresh_callback=token_updater) adapter.register_uri(requests_mock.POST, requests_mock.ANY, status_code=401, text=json.dumps({ 'access_token': 'fake_return_access_token', 'refresh_token': 'fake_return_refresh_token' })) adapter.register_uri(requests_mock.GET, requests_mock.ANY, status_code=401, text=json.dumps({'a': 'b'})) client._session.mount(client.API_ENDPOINT, adapter) try: resp = client.user_info() except: pass assert len(update_called) == 1
def test_summary_url(): client = OuraClient("test_id") url = client._build_summary_url(start="start-date", end=None, summary_type="sleep") parsed_url = urlparse(url) params = parse_qs(parsed_url.query) assert "end" not in params.keys() url2 = client._build_summary_url(start="start-date", end="end_date", summary_type="sleep") parsed_url = urlparse(url2) params = parse_qs(parsed_url.query) assert "end" in params.keys()
def test_summary_url(): client = OuraClient('test_id') url = client._build_summary_url(start='start-date', end=None, datatype='sleep') parsed_url = urlparse(url) params = parse_qs(parsed_url.query) assert 'end' not in params.keys() url2 = client._build_summary_url(start='start-date', end='end_date', datatype='sleep') parsed_url = urlparse(url2) params = parse_qs(parsed_url.query) assert 'end' in params.keys()
def pull_oura_data(): if oura_connected(): days_back = int(config.get('oura', 'days_back')) token_dict = current_token_dict() oura = OuraClient(client_id=client_id, client_secret=client_secret, access_token=token_dict['access_token'], refresh_token=token_dict['refresh_token'], refresh_callback=save_oura_token) df_readiness_summary = pull_readiness_data(oura, days_back) df_readiness_summary.to_csv('readiness.csv', sep=',') df_activity_summary, df_activity_samples = pull_activity_data( oura, days_back) df_sleep_summary, df_sleep_samples = pull_sleep_data(oura, days_back) insert_readiness_data(df_readiness_summary, days_back) insert_activity_data(df_activity_summary, df_activity_samples, days_back) insert_sleep_data(df_sleep_summary, df_sleep_samples, days_back) # # Generate correlation table - Depricated, no longer storing in table # generate_oura_correlations(lookback_days=9999) return df_sleep_summary.index.max() == df_readiness_summary.index.max( ) # == df_activity_summary.index.max()
def getOuraClient(envFile): client_id = os.getenv('OURA_CLIENT_ID') client_secret = os.getenv('OURA_CLIENT_SECRET') access_token = os.getenv('OURA_ACCESS_TOKEN') refresh_token = os.getenv('OURA_REFRESH_TOKEN') refresh_callback = lambda x: appendFile(envFile, x) auth_client = OuraClient(client_id=client_id, client_secret=client_secret, access_token=access_token, refresh_token=refresh_token, refresh_callback=refresh_callback) return auth_client
def oura_connected(): token_dict = current_token_dict() try: if token_dict: oura = OuraClient(client_id=client_id, client_secret=client_secret, access_token=token_dict['access_token'], refresh_token=token_dict['refresh_token'], refresh_callback=save_oura_token) app.server.logger.debug('Oura Connected') return True except BaseException as e: app.server.logger.error('Oura not connected') app.server.logger.error(e) return False
def pull_oura_data(): if oura_connected(): days_back = int(config.get('oura', 'days_back')) token_dict = current_token_dict() oura = OuraClient(client_id=client_id, client_secret=client_secret, access_token=token_dict['access_token'], refresh_token=token_dict['refresh_token'], refresh_callback=save_oura_token) df_readiness_summary = pull_readiness_data(oura, days_back) df_activity_summary, df_activity_samples = pull_activity_data( oura, days_back) df_sleep_summary, df_sleep_samples = pull_sleep_data(oura, days_back) insert_readiness_data(df_readiness_summary, days_back) insert_activity_data(df_activity_summary, df_activity_samples, days_back) insert_sleep_data(df_sleep_summary, df_sleep_samples, days_back) return df_sleep_summary.index.max() == df_readiness_summary.index.max( ) # == df_activity_summary.index.max()
def get_self(): pat = os.getenv("OURA_PAT") client = OuraClient(personal_access_token=pat) user_info = client.user_info() print(user_info)