def _interpret_response(self, value, method): if self._debug: log.debug('RSP: %s', value) if value['ok'] is not True: e = Error() e._from_raw(value) raise Exception("method: %s\nresponse: %s" % ( method, e, )) if isinstance(value['result'], list): responses = [] for result in value['result']: m = method._response() m._from_raw(result) dropped = m._from_raw_dropped() if dropped: log.warning('%s dropped %s', m.__class__.__name__, dropped) responses.append(m) return responses else: try: m = method._response() except TypeError: raise Exception('%s._response not defined' % method.__class__.__name__) m._from_raw(value['result']) dropped = m._from_raw_dropped() if dropped: log.warning('%s dropped %s', m.__class__.__name__, dropped) return m
def _interpret_response(self, value, method): if self._debug: log.debug('RSP: %s', value) if value['ok'] is not True: e = Error() e._from_raw(value) raise Exception("method: %s\nresponse: %s" % (method, e,)) if isinstance(value['result'], list): responses = [] for result in value['result']: m = method._response() m._from_raw(result) dropped = m._from_raw_dropped() if dropped: log.warning('%s dropped %s', m.__class__.__name__, dropped) responses.append(m) return responses else: try: m = method._response() except TypeError: raise Exception('%s._response not defined' % method.__class__.__name__) m._from_raw(value['result']) dropped = m._from_raw_dropped() if dropped: log.warning('%s dropped %s', m.__class__.__name__, dropped) return m
def post(self, method): url = self.__method_url(method._name) raw = method._to_raw() files = {} for k in raw.keys(): if isinstance(raw[k], file): import os files[k] = (os.path.split(raw[k].name)[1], raw[k]) del raw[k] rsp = requests.post(url, data=raw, files=files, proxies=self.__proxies, timeout=self.__timeout) value = rsp.json() if value["ok"] is not True: m = Error() m._from_raw(value) raise m if method._response: m = method._response() m._from_raw(value["result"]) return m elif isinstance(value["result"], Iterable): updates = [] update_id = None for result in value["result"]: updates.append(Type._new(result)) update_id = max(update_id, result["update_id"]) return updates, update_id raise ValueError("Unhandled message from server: %s" % value)
def post(self, method): url = self.__method_url(method._name) raw = method._to_raw() files = {} for k in raw.keys(): if isinstance(raw[k], file): import os files[k] = (os.path.split(raw[k].name)[1], raw[k]) del raw[k] rsp = requests.post(url, data=raw, files=files, proxies=self.__proxies, timeout=self.__timeout) value = rsp.json() if value['ok'] is not True: m = Error() m._from_raw(value) raise m if method._response: m = method._response() m._from_raw(value['result']) return m elif isinstance(value['result'], Iterable): updates = [] update_id = None for result in value['result']: updates.append(Type._new(result)) update_id = max(update_id, result['update_id']) return updates, update_id raise ValueError("Unhandled message from server: %s" % value)