XEP-0128: API changes

- ``set_extended_info``, ``add_extended_info`` and ``del_extended_info`` return Futures.
This commit is contained in:
mathieui 2021-02-14 11:57:25 +01:00
parent 4960cffcb4
commit e24e2f58d4
2 changed files with 49 additions and 6 deletions

View File

@ -7,3 +7,36 @@ XEP-0128: Service Discovery Extensions
.. autoclass:: XEP_0128 .. autoclass:: XEP_0128
:members: :members:
:exclude-members: session_bind, plugin_init, plugin_end :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.

View File

@ -5,6 +5,7 @@
# See the file LICENSE for copying permission. # See the file LICENSE for copying permission.
import logging import logging
from asyncio import Future
from typing import Optional from typing import Optional
import slixmpp import slixmpp
@ -53,37 +54,46 @@ class XEP_0128(BasePlugin):
for op in self._disco_ops: for op in self._disco_ops:
self.api.register(getattr(self.static, op), op, default=True) 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. Set additional, extended identity information to a node.
Replaces any existing extended information. Replaces any existing extended information.
.. versionchanged:: 1.8.0
This function now returns a Future.
:param jid: The JID to modify. :param jid: The JID to modify.
:param node: The node to modify. :param node: The node to modify.
:param data: Either a form, or a list of forms to use :param data: Either a form, or a list of forms to use
as extended information, replacing any as extended information, replacing any
existing extensions. 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. 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 jid: The JID to modify.
:param node: The node to modify. :param node: The node to modify.
:param data: Either a form, or a list of forms to add :param data: Either a form, or a list of forms to add
as extended information. 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, 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. 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 jid: The JID to modify.
:param node: The node 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)