client.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:python-netatmo-client 作者: antechrestos 项目源码 文件源码
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')
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号