Mercurial > libervia-backend
changeset 4349:1bedcc6712e9
plugin XEP-0131: update triggers priority + add headers to MessageDataExtra:
- Lower priority is used for triggers so other plugins can add headers before the XML is
generated.
- Added `headers` to `MessageDataExtra` type.
rel 456
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 28 Feb 2025 09:23:35 +0100 |
parents | 35d41de5b2aa |
children | 6baea959dc33 |
files | libervia/backend/core/core_types.py libervia/backend/memory/disco.py libervia/backend/plugins/plugin_xep_0131.py |
diffstat | 3 files changed, 14 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libervia/backend/core/core_types.py Mon Jan 13 01:23:22 2025 +0100 +++ b/libervia/backend/core/core_types.py Fri Feb 28 09:23:35 2025 +0100 @@ -18,7 +18,7 @@ from abc import ABC, abstractmethod from collections import namedtuple -from typing import Dict, Callable, Optional +from typing import Any from twisted.internet import defer from twisted.python import failure from typing_extensions import TypedDict @@ -42,7 +42,7 @@ # Incomplete types built through observation rather than code inspection. MessageDataExtra = TypedDict( - "MessageDataExtra", {"encrypted": bool, "origin_id": str}, total=False + "MessageDataExtra", {"encrypted": bool, "origin_id": str, "headers": dict[str, Any]}, total=False ) @@ -52,8 +52,8 @@ "from": t_jid.JID, "to": t_jid.JID, "uid": str, - "message": Dict[str, str], - "subject": Dict[str, str], + "message": dict[str, str], + "subject": dict[str, str], "type": str, "timestamp": float, "extra": MessageDataExtra, @@ -129,7 +129,7 @@ def generate_message_xml( self, data: MessageData, - post_xml_treatments: Optional[defer.Deferred] = None, + post_xml_treatments: defer.Deferred|None = None, ) -> MessageData: """Generate <message/> stanza from message data
--- a/libervia/backend/memory/disco.py Mon Jan 13 01:23:22 2025 +0100 +++ b/libervia/backend/memory/disco.py Fri Feb 28 09:23:35 2025 +0100 @@ -198,7 +198,7 @@ @param category: identity category @param type_: identity type @param jid_: jid of the target, or None for profile's server - @param node(unicode): optional node to use for disco request + @param node: optional node to use for disco request @return: True if the entity has the given identity """ disco_infos = await self.get_infos(client, jid_, node)
--- a/libervia/backend/plugins/plugin_xep_0131.py Mon Jan 13 01:23:22 2025 +0100 +++ b/libervia/backend/plugins/plugin_xep_0131.py Fri Feb 28 09:23:35 2025 +0100 @@ -151,9 +151,13 @@ log.info(_("Stanza Headers and Internet Metadata plugin initialization")) self.host = host host.register_namespace("shim", NS_SHIM) - host.trigger.add("sendMessage", self.send_message_trigger) - host.trigger.add("sendMessageComponent", self.send_message_trigger) - host.trigger.add("message_received", self.message_received_trigger) + # We give negative priority, as we want header to be added after normal priority + # trigger are called, in case they add their own headers. + host.trigger.add("sendMessage", self.send_message_trigger, priority=-50) + host.trigger.add("sendMessageComponent", self.send_message_trigger, priority=-50) + # We give non defaut priority, has we want header parsing to be done before normal + # priority triggers are called. + host.trigger.add("message_received", self.message_received_trigger, priority=50) def quote_value(self, value: str) -> str: """Quote a value if it contain special characters @@ -241,7 +245,7 @@ pass else: - def post_treat_addr(mess_data: MessageData): + def post_treat_addr(mess_data: MessageData) -> MessageData: """Add the headers metadata to the message data""" if headers.keywords: # We move keywords to a list of string in extra's "keywords" field.