From e24e2f58d4e9c71ef005a4dfe88abac7bff1cc6b Mon Sep 17 00:00:00 2001 From: mathieui Date: Sun, 14 Feb 2021 11:57:25 +0100 Subject: [PATCH] XEP-0128: API changes - ``set_extended_info``, ``add_extended_info`` and ``del_extended_info`` return Futures. --- docs/api/plugins/xep_0128.rst | 33 ++++++++++++++++++++++ slixmpp/plugins/xep_0128/extended_disco.py | 22 +++++++++++---- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/docs/api/plugins/xep_0128.rst b/docs/api/plugins/xep_0128.rst index 1e080928..ae6b4b3c 100644 --- a/docs/api/plugins/xep_0128.rst +++ b/docs/api/plugins/xep_0128.rst @@ -7,3 +7,36 @@ XEP-0128: Service Discovery Extensions .. autoclass:: XEP_0128 :members: :exclude-members: session_bind, plugin_init, plugin_end + +Internal API methods +-------------------- + + + +.. glossary:: + + add_extended_info + - **jid**: JID to set the extended info for + - **node**: note to set the info at + - **ifrom**: unused + - **args**: A :class:`~.Form` or list of forms to add to the disco + extended info for this JID/node. + + Add extended info for a JID/node. + + set_extended_info + - **jid**: JID to set the extended info for + - **node**: note to set the info at + - **ifrom**: unused + - **args**: A :class:`~.Form` or list of forms to set as the disco + extended info for this JID/node. + + Set extended info for a JID/node. + + del_extended_info + - **jid**: JID to delete the extended info from + - **node**: note to delete the info from + - **ifrom**: unused + - **args**: unused + + Delete extended info for a JID/node. diff --git a/slixmpp/plugins/xep_0128/extended_disco.py b/slixmpp/plugins/xep_0128/extended_disco.py index d0264caf..759e5efe 100644 --- a/slixmpp/plugins/xep_0128/extended_disco.py +++ b/slixmpp/plugins/xep_0128/extended_disco.py @@ -5,6 +5,7 @@ # See the file LICENSE for copying permission. import logging +from asyncio import Future from typing import Optional import slixmpp @@ -53,37 +54,46 @@ class XEP_0128(BasePlugin): for op in self._disco_ops: self.api.register(getattr(self.static, op), op, default=True) - def set_extended_info(self, jid=None, node=None, **kwargs): + def set_extended_info(self, jid=None, node=None, **kwargs) -> Future: """ Set additional, extended identity information to a node. Replaces any existing extended information. + .. versionchanged:: 1.8.0 + This function now returns a Future. + :param jid: The JID to modify. :param node: The node to modify. :param data: Either a form, or a list of forms to use as extended information, replacing any existing extensions. """ - self.api['set_extended_info'](jid, node, None, kwargs) + return self.api['set_extended_info'](jid, node, None, kwargs) - def add_extended_info(self, jid=None, node=None, **kwargs): + def add_extended_info(self, jid=None, node=None, **kwargs) -> Future: """ Add additional, extended identity information to a node. + .. versionchanged:: 1.8.0 + This function now returns a Future. + :param jid: The JID to modify. :param node: The node to modify. :param data: Either a form, or a list of forms to add as extended information. """ - self.api['add_extended_info'](jid, node, None, kwargs) + return self.api['add_extended_info'](jid, node, None, kwargs) def del_extended_info(self, jid: Optional[JID] = None, - node: Optional[str] = None, **kwargs): + node: Optional[str] = None, **kwargs) -> Future: """ Remove all extended identity information to a node. + .. versionchanged:: 1.8.0 + This function now returns a Future. + :param jid: The JID to modify. :param node: The node to modify. """ - self.api['del_extended_info'](jid, node, None, kwargs) + return self.api['del_extended_info'](jid, node, None, kwargs)