Ejemplo n.º 1
0
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'
Ejemplo n.º 2
0
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())
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
    
    
Ejemplo n.º 7
0
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'
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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())
Ejemplo n.º 12
0
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)