Merge pull request #12 from ppetru/refresh
Refresh & save Fitbit credentials when they expire
This commit is contained in:
+23
-7
@@ -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,15 +97,20 @@ 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()
|
||||||
|
tzinfo = dateutil.tz.gettz(userProfile['user']['timezone'])
|
||||||
|
|
||||||
userProfile = fitbitClient.user_profile_get()
|
devices = fitbitClient.get_devices()
|
||||||
tzinfo = dateutil.tz.gettz(userProfile['user']['timezone'])
|
(scale,) = (device for device in devices if device['type'] == 'SCALE')
|
||||||
|
|
||||||
devices = fitbitClient.get_devices()
|
fitbitBodyweight = fitbitClient.get_bodyweight(period='1m')
|
||||||
(scale,) = (device for device in devices if device['type'] == 'SCALE')
|
logging.debug("Got Fitbit data")
|
||||||
|
finally:
|
||||||
|
UpdateFitbitCredentials(fitbitClient, args.fitbit_creds, fitbitCreds)
|
||||||
|
|
||||||
fitbitBodyweight = fitbitClient.get_bodyweight(period='1m')
|
|
||||||
fitbitWeightLogs = fitbitBodyweight['weight']
|
fitbitWeightLogs = fitbitBodyweight['weight']
|
||||||
fitbitWeightLogTimes = [epochOfFitbitLog(log, tzinfo) for log in fitbitWeightLogs]
|
fitbitWeightLogTimes = [epochOfFitbitLog(log, tzinfo) for log in fitbitWeightLogs]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user