From: Ross Jones Date: Fri, 11 Oct 2013 14:57:54 +0000 Subject: Force a refresh of the oauth token before every request to ensure we do not fail because of that X-Git-Url: http://maxious.lambdacomplex.org/git/?p=ckanext-ga-report.git&a=commitdiff&h=809b6233225e8f9b9ad8c6abb138918c3dc0a8e6 --- Force a refresh of the oauth token before every request to ensure we do not fail because of that --- --- a/ckanext/ga_report/download_analytics.py +++ b/ckanext/ga_report/download_analytics.py @@ -258,24 +258,22 @@ return data def _get_json(self, params, prev_fail=False): - if prev_fail: - import os - ga_token_filepath = os.path.expanduser(config.get('googleanalytics.token.filepath', '')) - if not ga_token_filepath: - print 'ERROR: In the CKAN config you need to specify the filepath of the ' \ - 'Google Analytics token file under key: googleanalytics.token.filepath' - return - - try: - self.token, svc = init_service(ga_token_filepath, None) - except TypeError: - print ('Have you correctly run the getauthtoken task and ' - 'specified the correct token file in the CKAN config under ' - '"googleanalytics.token.filepath"?') - - try: - # Because of issues of invalid responses, we are going to make these requests - # ourselves. + ga_token_filepath = os.path.expanduser(config.get('googleanalytics.token.filepath', '')) + if not ga_token_filepath: + print 'ERROR: In the CKAN config you need to specify the filepath of the ' \ + 'Google Analytics token file under key: googleanalytics.token.filepath' + return + + try: + log.info("Trying to refresh our OAuth token") + self.token, svc = init_service(ga_token_filepath, None) + log.info("OAuth token refreshed") + except Exception auth_exception: + log.error("Oauth refresh failed") + log.exception(auth_exception) + return + + try: headers = {'authorization': 'Bearer ' + self.token} r = requests.get("https://www.googleapis.com/analytics/v3/data/ga", params=params, headers=headers) if r.status_code != 200: @@ -285,10 +283,6 @@ return json.loads(r.content) except Exception, e: - if not prev_fail: - print e - results = self._get_json(self, params, prev_fail=True) - else: log.exception(e) return dict(url=[])