From 4a2361bc9f3fb2995059c19cdc2ea6c9e025033a Mon Sep 17 00:00:00 2001 From: Herve Saint-Amand Date: Fri, 18 Jan 2019 20:25:11 +0000 Subject: [PATCH 1/2] Fixed auth on API call This was failing without the change --- fitbit/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fitbit/api.py b/fitbit/api.py index ba9d037..2fb830a 100644 --- a/fitbit/api.py +++ b/fitbit/api.py @@ -141,9 +141,9 @@ def fetch_access_token(self, code, redirect_uri=None): self.session.redirect_uri = redirect_uri return self.session.fetch_token( self.access_token_url, - username=self.client_id, - password=self.client_secret, - code=code) + auth=HTTPBasicAuth(self.client_id, self.client_secret), + code=code, + ) def refresh_token(self): """Step 3: obtains a new access_token from the the refresh token From e85c60ea26fb3110163e1efab9ae684d1a671d56 Mon Sep 17 00:00:00 2001 From: Herve Saint-Amand Date: Fri, 18 Jan 2019 20:25:26 +0000 Subject: [PATCH 2/2] Added `activity_logs_list` call --- fitbit/api.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/fitbit/api.py b/fitbit/api.py index 2fb830a..6854f14 100644 --- a/fitbit/api.py +++ b/fitbit/api.py @@ -618,6 +618,28 @@ def activity_stats(self, user_id=None, qualifier=''): ) return self.make_request(url) + def activity_logs_list(self, user_id=None, before_date=None, after_date=None, offset=0, limit=20): + """ + https://dev.fitbit.com/build/reference/web-api/activity/#get-activity-logs-list + """ + if bool(before_date) == bool(after_date): + raise TypeError("Exactly one of `before_date` and `after_date` must be specified") + + params = { + 'sort': 'desc' if before_date else 'asc', + 'offset': '%d' % offset, + 'limit': '%d' % limit, + } + if before_date: + params['beforeDate'] = before_date + else: + params['afterDate'] = after_date + + url = "{0}/{1}/user/{2}/activities/list.json".format( + *self._get_common_args(user_id), + ) + return self.make_request(url, params=params) + def _food_stats(self, user_id=None, qualifier=''): """ This builds the convenience methods on initialization::