Add a wrapper to get_info/get_items functions
(and fix caps in the process)
This commit is contained in:
		| @@ -9,6 +9,7 @@ | ||||
| import logging | ||||
|  | ||||
| from slixmpp import Iq | ||||
| from slixmpp import future_wrapper | ||||
| from slixmpp.plugins import BasePlugin | ||||
| from slixmpp.xmlstream.handler import Callback | ||||
| from slixmpp.xmlstream.matcher import StanzaPath | ||||
| @@ -294,6 +295,7 @@ class XEP_0030(BasePlugin): | ||||
|                 'cached': cached} | ||||
|         return self.api['has_identity'](jid, node, ifrom, data) | ||||
|  | ||||
|     @future_wrapper | ||||
|     def get_info(self, jid=None, node=None, local=None, | ||||
|                        cached=None, **kwargs): | ||||
|         """ | ||||
| @@ -381,6 +383,7 @@ class XEP_0030(BasePlugin): | ||||
|             info = info['disco_info'] | ||||
|         self.api['set_info'](jid, node, None, info) | ||||
|  | ||||
|     @future_wrapper | ||||
|     def get_items(self, jid=None, node=None, local=False, **kwargs): | ||||
|         """ | ||||
|         Retrieve the disco#items results from a given JID/node combination. | ||||
|   | ||||
| @@ -280,9 +280,10 @@ class XEP_0115(BasePlugin): | ||||
|         binary = hash(S.encode('utf8')).digest() | ||||
|         return base64.b64encode(binary).decode('utf-8') | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def update_caps(self, jid=None, node=None, preserve=False): | ||||
|         try: | ||||
|             info = self.xmpp['xep_0030'].get_info(jid, node, local=True) | ||||
|             info = yield from self.xmpp['xep_0030'].get_info(jid, node, local=True) | ||||
|             if isinstance(info, Iq): | ||||
|                 info = info['disco_info'] | ||||
|             ver = self.generate_verstring(info, self.hash) | ||||
|   | ||||
| @@ -8,6 +8,7 @@ | ||||
|  | ||||
| import logging | ||||
|  | ||||
| from slixmpp import asyncio | ||||
| from slixmpp.xmlstream import register_stanza_plugin | ||||
| from slixmpp.plugins.base import BasePlugin, register_plugin | ||||
|  | ||||
| @@ -61,7 +62,7 @@ class XEP_0163(BasePlugin): | ||||
|         for ns in namespace: | ||||
|             self.xmpp['xep_0030'].add_feature('%s+notify' % ns, | ||||
|                                               jid=jid) | ||||
|         self.xmpp['xep_0115'].update_caps(jid) | ||||
|         asyncio.async(self.xmpp['xep_0115'].update_caps(jid)) | ||||
|  | ||||
|     def remove_interest(self, namespace, jid=None): | ||||
|         """ | ||||
| @@ -80,7 +81,7 @@ class XEP_0163(BasePlugin): | ||||
|         for ns in namespace: | ||||
|             self.xmpp['xep_0030'].del_feature(jid=jid, | ||||
|                                               feature='%s+notify' % namespace) | ||||
|         self.xmpp['xep_0115'].update_caps(jid) | ||||
|         asyncio.async(self.xmpp['xep_0115'].update_caps(jid)) | ||||
|  | ||||
|     def publish(self, stanza, node=None, id=None, options=None, ifrom=None, | ||||
|                 timeout_callback=None, callback=None, timeout=None): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 mathieui
					mathieui