Example #1
0
    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
Example #3
0
    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)
Example #4
0
    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)