def _call_api(self, method, uri, **kwargs):
def _set_token_in_request():
if 'params' in kwargs:
kwargs['params']['access_token'] = self._access_token
elif 'data' in kwargs:
kwargs['data']['access_token'] = self._access_token
else:
kwargs['params'] = dict(access_token=self._access_token)
_set_token_in_request()
try:
response = NetatmoClient._invoke(method,
'%s%s' % (NetatmoClient.API_BASE_URL, uri),
**kwargs)
except InvalidStatusCode, i:
if NetatmoClient._is_token_expired(i):
try:
self.request_refresh_token()
_set_token_in_request()
response = NetatmoClient._invoke(method,
'%s%s' % (NetatmoClient.API_BASE_URL, uri),
**kwargs)
except InvalidStatusCode, other:
if other.status_code / 100 == 4:
self._access_token = None
self._refresh_token = None
raise
else:
raise
if kwargs.get('raw_api_call', False):
return response
else:
result = response.json()
_logger.debug('%s - %s', uri, json.dumps(result))
if result['status'] != "ok":
raise InvalidStatusCode(httplib.INTERNAL_SERVER_ERROR, result)
else:
return result.get('body')
评论列表
文章目录