diff options
author | lovetox <philipp@hoerist.com> | 2020-09-24 15:31:39 +0300 |
---|---|---|
committer | lovetox <philipp@hoerist.com> | 2020-09-24 15:31:39 +0300 |
commit | bcb25603ea3f44a8060f4c7f0970117d17067f56 (patch) | |
tree | e082c7ec81287052ff05d7aa9661a05f56b971c6 /nbxmpp | |
parent | 4d55d9a2fdfba62b71a0497a3f984f1272c9220b (diff) |
Discovery: Use tasks
Diffstat (limited to 'nbxmpp')
-rw-r--r-- | nbxmpp/modules/discovery.py | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/nbxmpp/modules/discovery.py b/nbxmpp/modules/discovery.py index 7463ff2..252f48a 100644 --- a/nbxmpp/modules/discovery.py +++ b/nbxmpp/modules/discovery.py @@ -20,7 +20,6 @@ import logging from nbxmpp.protocol import Iq from nbxmpp.namespaces import Namespace -from nbxmpp.protocol import isResultNode from nbxmpp.protocol import ErrorNode from nbxmpp.protocol import ERR_ITEM_NOT_FOUND from nbxmpp.protocol import NodeProcessed @@ -31,9 +30,9 @@ from nbxmpp.structs import DiscoInfo from nbxmpp.structs import DiscoItems from nbxmpp.structs import DiscoItem from nbxmpp.structs import StanzaHandler -from nbxmpp.util import call_on_response -from nbxmpp.util import callback from nbxmpp.util import raise_error +from nbxmpp.task import iq_request_task +from nbxmpp.errors import StanzaError log = logging.getLogger('nbxmpp.m.discovery') @@ -59,27 +58,28 @@ class Discovery(BaseModule): client.send_stanza(iq) raise NodeProcessed - @call_on_response('_disco_info_received') + @iq_request_task def disco_info(self, jid, node=None): + _task = yield + self._log.info('Disco info: %s, node: %s', jid, node) - return get_disco_request(Namespace.DISCO_INFO, jid, node) - @callback - def _disco_info_received(self, stanza): - if not isResultNode(stanza): - return raise_error(self._log.info, stanza) - return parse_disco_info(stanza) + response = yield get_disco_request(Namespace.DISCO_INFO, jid, node) + if response.isError(): + raise StanzaError(response) + yield parse_disco_info(response) - @call_on_response('_disco_items_received') + @iq_request_task def disco_items(self, jid, node=None): + _task = yield + self._log.info('Disco items: %s, node: %s', jid, node) - return get_disco_request(Namespace.DISCO_ITEMS, jid, node) - @callback - def _disco_items_received(self, stanza): - if not isResultNode(stanza): - return raise_error(self._log.info, stanza) - return parse_disco_items(stanza) + response = yield get_disco_request(Namespace.DISCO_ITEMS, jid, node) + if response.isError(): + raise StanzaError(response) + yield parse_disco_items(response) + def parse_disco_info(stanza, timestamp=None): |