Mercurial > libervia-backend
comparison libervia/backend/plugins/plugin_xep_0060.py @ 4356:c9626f46b63e
plugin XEP-0059: Use Pydantic models for RSM.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 11 Apr 2025 18:19:28 +0200 |
parents | e9971a4b0627 |
children |
comparison
equal
deleted
inserted
replaced
4355:01ee3b902d33 | 4356:c9626f46b63e |
---|---|
38 from libervia.backend.core.constants import Const as C | 38 from libervia.backend.core.constants import Const as C |
39 from libervia.backend.core.core_types import SatXMPPEntity | 39 from libervia.backend.core.core_types import SatXMPPEntity |
40 from libervia.backend.core.i18n import _ | 40 from libervia.backend.core.i18n import _ |
41 from libervia.backend.core.log import getLogger | 41 from libervia.backend.core.log import getLogger |
42 from libervia.backend.core.xmpp import SatXMPPClient | 42 from libervia.backend.core.xmpp import SatXMPPClient |
43 from libervia.backend.plugins.plugin_xep_0059 import RSMRequest | |
43 from libervia.backend.tools import utils | 44 from libervia.backend.tools import utils |
44 from libervia.backend.tools import sat_defer | 45 from libervia.backend.tools import sat_defer |
45 from libervia.backend.tools import xml_tools | 46 from libervia.backend.tools import xml_tools |
46 from libervia.backend.tools.common import data_format | 47 from libervia.backend.tools.common import data_format |
47 | 48 |
810 service: jid.JID | None, | 811 service: jid.JID | None, |
811 node: str, | 812 node: str, |
812 max_items: int | None = None, | 813 max_items: int | None = None, |
813 item_ids: list[str] | None = None, | 814 item_ids: list[str] | None = None, |
814 sub_id: str | None = None, | 815 sub_id: str | None = None, |
815 rsm_request: rsm.RSMRequest | None = None, | 816 rsm_request: rsm.RSMRequest | RSMRequest | None = None, |
816 extra: dict | None = None, | 817 extra: dict | None = None, |
817 ) -> tuple[list[domish.Element], dict]: | 818 ) -> tuple[list[domish.Element], dict]: |
818 """Retrieve pubsub items from a node. | 819 """Retrieve pubsub items from a node. |
819 | 820 |
820 @param service: pubsub service. | 821 @param service: pubsub service. |
831 - metadata with the following keys: | 832 - metadata with the following keys: |
832 - rsm_first, rsm_last, rsm_count, rsm_index: first, last, count and index | 833 - rsm_first, rsm_last, rsm_count, rsm_index: first, last, count and index |
833 value of RSMResponse | 834 value of RSMResponse |
834 - service, node: service and node used | 835 - service, node: service and node used |
835 """ | 836 """ |
837 if rsm_request is not None: | |
838 # For the moment we convert RSMRequest to wokkel rsm.RSMRequest for backward | |
839 # compatibility with other plugins. In the future we should work as much as | |
840 # possible with XEP-0059's plugin RSMRequest, and convert to Wokkel | |
841 # rsm.RSMRequest only when we need to work with wokkel directly. | |
842 if isinstance(rsm_request, rsm.RSMRequest): | |
843 log.warning("Use for rsm.RSMRequest is deprecated") | |
844 else: | |
845 rsm_request = rsm_request.to_wokkel_request() | |
836 if item_ids and max_items is not None: | 846 if item_ids and max_items is not None: |
837 max_items = None | 847 max_items = None |
838 if rsm_request and item_ids: | 848 if rsm_request and item_ids: |
839 raise ValueError("items_id can't be used with rsm") | 849 raise ValueError("items_id can't be used with rsm") |
840 if extra is None: | 850 if extra is None: |