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: