Merge pull request #12 from ppetru/refresh

Refresh & save Fitbit credentials when they expire
This commit is contained in:
John Tantalo committed 2016-05-31 11:02:19 -04:00
commit b59e0c43d6
1 file changed
+19 -3
+19 -3
View File
@@ -26,7 +26,18 @@ def GetFitbitClient(filename):
credentials = yaml.load(open(filename)) credentials = yaml.load(open(filename))
client = fitbit.Fitbit(**credentials) client = fitbit.Fitbit(**credentials)
logging.debug("Fitbit client created") logging.debug("Fitbit client created")
return client return client, credentials
def UpdateFitbitCredentials(client, filename, credentials):
dump = False
for t in ('access_token', 'refresh_token'):
if client.client.token[t] != credentials[t]:
credentials[t] = client.client.token[t]
dump = True
if dump:
logging.debug("Updating Fitbit credentials")
yaml.dump(credentials, open(filename, 'w'))
def GetGoogleClient(filename): def GetGoogleClient(filename):
@@ -86,8 +97,9 @@ def main():
logging.basicConfig(level=max(debugLevel, 0)) logging.basicConfig(level=max(debugLevel, 0))
logging.root.name = "fitsync" logging.root.name = "fitsync"
fitbitClient = GetFitbitClient(args.fitbit_creds) fitbitClient, fitbitCreds = GetFitbitClient(args.fitbit_creds)
try:
logging.debug("Getting Fitbit data")
userProfile = fitbitClient.user_profile_get() userProfile = fitbitClient.user_profile_get()
tzinfo = dateutil.tz.gettz(userProfile['user']['timezone']) tzinfo = dateutil.tz.gettz(userProfile['user']['timezone'])
@@ -95,6 +107,10 @@ def main():
(scale,) = (device for device in devices if device['type'] == 'SCALE') (scale,) = (device for device in devices if device['type'] == 'SCALE')
fitbitBodyweight = fitbitClient.get_bodyweight(period='1m') fitbitBodyweight = fitbitClient.get_bodyweight(period='1m')
logging.debug("Got Fitbit data")
finally:
UpdateFitbitCredentials(fitbitClient, args.fitbit_creds, fitbitCreds)
fitbitWeightLogs = fitbitBodyweight['weight'] fitbitWeightLogs = fitbitBodyweight['weight']
fitbitWeightLogTimes = [epochOfFitbitLog(log, tzinfo) for log in fitbitWeightLogs] fitbitWeightLogTimes = [epochOfFitbitLog(log, tzinfo) for log in fitbitWeightLogs]