def log_key(self, type, id, query): if type not in self.log: self.log[type] = set() self.log[type].add(id) keyname = self.make_key(type, id) if keyname not in self.log: self.log[keyname] = dict() self.log[keyname][utils.dict_to_qs(query)] = deepcopy(query)
def query_to_key(self, query): """ Take a query in the form of a dictionary and turn it into something that can be used in a cache key """ if query is None: return '' return utils.dict_to_qs(query)
def log_remove(self, type, id, query): if type in self.log: if id in self.log[type]: self.log[type].remove(id) if len(self.log[type]) == 0: del self.log[type] keyname = self.make_key(type, id) query_str = utils.dict_to_qs(query) if keyname in self.log: if query_str in self.log[keyname]: del self.log[keyname][query_str] if len(self.log[keyname]) == 0: del self.log[keyname]
def get(self, url, query=None, if_modified_since=None): if query is not None: url += '?' + utils.dict_to_qs(query) resp = self.s.get( self.config['P2P_API_ROOT'] + url, headers=self.http_headers(if_modified_since=if_modified_since), verify=False) resp_log = self._check_for_errors(resp, url) try: ret = utils.parse_response(resp.json()) if 'ETag' in resp.headers: ret['etag'] = resp.headers['ETag'] return ret except ValueError: log.error('JSON VALUE ERROR ON SUCCESSFUL RESPONSE %s' % resp_log) raise
def get(self, url, query=None, if_modified_since=None): if query is not None: url += '?' + utils.dict_to_qs(query) log.debug("GET: %s" % url) resp = self.s.get( self.config['P2P_API_ROOT'] + url, headers=self.http_headers(if_modified_since=if_modified_since), verify=False) resp_log = self._check_for_errors(resp, url) try: ret = utils.parse_response(resp.json()) if 'ETag' in resp.headers: ret['etag'] = resp.headers['ETag'] return ret except ValueError: log.error('JSON VALUE ERROR ON SUCCESSFUL RESPONSE %s' % resp_log) raise
def get(self, url, query=None): if query is not None: url += '?' + utils.dict_to_qs(query) resp = requests.get( self.config['P2P_API_ROOT'] + url, headers=self.http_headers(), verify=False) if self.debug: log.debug('URL: %s' % url) log.debug('HEADERS: %s' % self.http_headers()) log.debug('STATUS: %s' % resp.status_code) log.debug('RESPONSE_BODY: %s' % resp.content) if resp.status_code >= 500: resp.raise_for_status() elif resp.status_code >= 400: try: data = resp.json() except ValueError: data = resp.text raise P2PException(resp.content, data) return utils.parse_response(resp.json())
def query_to_key(self, query): if query is None: return '' return utils.dict_to_qs(query)