def test_save_fitbit_credentials(batman_user): creds = get_user_fitbit_credentials(batman_user.id) assert not creds save_fitbit_token(batman_user.id, 'acc', 'ref') creds = get_user_fitbit_credentials(batman_user.id) assert creds.refresh_token == 'ref' assert creds.access_token == 'acc'
def index(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: user_profile = "Could not access fitbit profile" ls = 'Subscription List is Empty!' data = '' fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) #client.subscription(flask_login.current_user.id, '100') #ls = client.time_series('activities/calories', period='1y') #ls = client.activity_stats() #ls = client.list_subscriptions() #pprint(ls) #data = ls['activities-calories'] except BadResponse: flash("Api Call Failed") return render_template('index.html', user_profile=user_profile, permission_url=get_permission_screen_url())
def get_calerories(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) data = '' if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) #client.subscription(flask_login.current_user.id, '100') #ls = client.time_series('activities/calories', period='1y') #ls = client.activity_stats() #ls = client.list_subscriptions() #data = ls['activities-calories'] ls = client.time_series('activities/calories', period='1y') r = json.dumps(ls) d = json.loads(r) data = json_normalize(d['activities-calories']) except BadResponse: flash("Api Call Failed") return render_template('activities.html', data=data)
def get_intraday_heart_rate(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) data = '' if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get('') user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) #client.subscription(flask_login.current_user.id, '100') ls = client.intraday_time_series('activities/heart') ls = client.time_series('activities/heart', period='1y') r = json.dumps(ls) d = json.loads(r) data = json_normalize(d['activities-heart']) data = ls except BadResponse: flash("Api Call Failed") return render_template('intraday_heart_data.html', activities=data)
def get_sleepdata(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) data = '' if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) week_sleep_data = [] #week_date_range = (date.today() - timedelta(days=x) for x in xrange(30)) #week_data_range = ((date.today() - timedelta(days=240)) - (date.today() - timedelta(days=260)) week_date_range = (date.today() - timedelta(days=240) - timedelta(days=x) for x in xrange(30)) for day in week_date_range: day_sleep_data = client.sleep(date=day) week_sleep_data.append(day_sleep_data) ls = week_sleep_data r = json.dumps(ls) d = json.loads(r) data = json_normalize(d) except BadResponse: flash("Api Call Failed") return render_template('activities_sleep.html', data=data)
def get_data(user,resource,base_date,detail_level): """ endpoint that retrieves intraday data """ resource_ = resource.replace('-','/') if user == 'all': creds = get_all_fitbit_credentials() response = {} for cred in creds: with fitbit_client(cred) as client: try: response[cred.user_id] = client.intraday_time_series(resource_,base_date=base_date,detail_level=detail_level) except BadResponse: flash("Api Call Failed") except InvalidGrantError: return redirect(url_for('main.index')) else: cred = get_user_fitbit_credentials(unquote(user)) with fitbit_client(cred) as client: try: response = client.intraday_time_series(resource_,base_date=base_date,detail_level=detail_level) except BadResponse: flash("Api Call Failed, malformed query?") except InvalidGrantError: return redirect(url_for('main.index')) return jsonify(response)
def test_do_fitbit_auth_saves_token(batman_user): code = 'code' responses.add(responses.POST, get_auth_url(code), json={ 'access_token': 'acc', 'refresh_token': 'ref' }, match_querystring=True) creds = get_user_fitbit_credentials(batman_user.id) assert not creds do_fitbit_auth(code, batman_user) creds = get_user_fitbit_credentials(batman_user.id) assert creds.refresh_token == 'ref' assert creds.access_token == 'acc'
def get_sleepdata(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) data = '' file_path = '/export/sc-ehealth01/fitbit/fitbit-data-collection/data/' if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) week_sleep_data = [] #week_date_range = (date.today() - timedelta(days=x) for x in xrange(30)) week_date_range = (date.today() - timedelta(days=x) for x in xrange(7)) for day in week_date_range: day_sleep_data = client.sleep(date=day) week_sleep_data.append(day_sleep_data) ls = week_sleep_data r = json.dumps(ls) d = json.loads(r) data = json_normalize(d) df = pd.DataFrame() df = df.append( { 'fitbit_user_id': profile_response['user']['encodedId'], 'full_name': profile_response['user']['fullName'], 'json_value': data }, ignore_index=True) #f = ls['activities-steps'] #df.to_csv('filename.csv', mode='a', header=False) df.to_csv(file_path + 'timeseries_sleep.csv', mode='a', header=False, sep=',', index=False, encoding='utf-8') except BadResponse: flash("Api Call Failed") return render_template('activities_sleep.html', user_profile=user_profile, data=data, df=df)
def get_steps(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: data = '' file_path = '/export/sc-ehealth01/fitbit/fitbit-data-collection/data/' fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} UserId: {} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['encodedId'], profile_response['user']['memberSince']) #client.subscription(flask_login.current_user.id, '100') ls = client.time_series('activities/steps', period='1y') r = json.dumps(ls) d = json.loads(r) data = json_normalize(d['activities-steps']) df = pd.DataFrame() df = df.append( { 'fitbit_user_id': profile_response['user']['encodedId'], 'full_name': profile_response['user']['fullName'], 'json_value': d }, ignore_index=True) #f = ls['activities-steps'] #df.to_csv('filename.csv', mode='a', header=False) df.to_csv(file_path + 'activities_steps.csv', mode='a', header=False, sep=',', index=False, encoding='utf-8') except BadResponse: flash("Api Call Failed") return render_template('activities_steps.html', user_profile=user_profile, data=data, df=df)
def get_daily_activity_summary_by_date(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) print 'fitbit_creds: ' + str(fitbit_creds) data = '' file_path = '/export/sc-ehealth01/fitbit/fitbit-data-collection/data/' datetime_from = request.args.get('date') date_object = datetime.strptime(datetime_from, '%Y-%m-%d') if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) ls = client.activities(date=date_object) r = json.dumps(ls) d = json.loads(r) data = d df = pd.DataFrame() df = df.append( { 'fitbit_user_id': profile_response['user']['encodedId'], 'full_name': profile_response['user']['fullName'], 'json_value': d }, ignore_index=True) df.to_csv(file_path + 'daily_activity_summary.csv', mode='a', header=False, sep=',', index=False, encoding='utf-8') except BadResponse: flash("Api Call Failed") return render_template('daily_activity_summary.html', data=ls, user_profile=user_profile, df=df)
def index(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: user_profile = "Could not access fitbit profile" fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) except BadResponse: flash("Api Call Failed") return render_template('index.html', user_profile=user_profile, permission_url=get_permission_screen_url())
def list_subscription(): if not flask_login.current_user.is_authenticated: return redirect(url_for('main.login')) else: fitbit_creds = get_user_fitbit_credentials(flask_login.current_user.id) data = '' if fitbit_creds: with fitbit_client(fitbit_creds) as client: try: profile_response = client.user_profile_get() user_profile = "{} has been on fitbit since {}".format( profile_response['user']['fullName'], profile_response['user']['memberSince']) ls = client.list_subscriptions() except BadResponse: flash("Api Call Failed") return render_template('list-subscriptions.html', data=ls)