comparison libervia/backend/plugins/plugin_xep_0131.py @ 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 6a70fcd93a7a
children
comparison
equal deleted inserted replaced
4348:35d41de5b2aa 4349:1bedcc6712e9
149 149
150 def __init__(self, host): 150 def __init__(self, host):
151 log.info(_("Stanza Headers and Internet Metadata plugin initialization")) 151 log.info(_("Stanza Headers and Internet Metadata plugin initialization"))
152 self.host = host 152 self.host = host
153 host.register_namespace("shim", NS_SHIM) 153 host.register_namespace("shim", NS_SHIM)
154 host.trigger.add("sendMessage", self.send_message_trigger) 154 # We give negative priority, as we want header to be added after normal priority
155 host.trigger.add("sendMessageComponent", self.send_message_trigger) 155 # trigger are called, in case they add their own headers.
156 host.trigger.add("message_received", self.message_received_trigger) 156 host.trigger.add("sendMessage", self.send_message_trigger, priority=-50)
157 host.trigger.add("sendMessageComponent", self.send_message_trigger, priority=-50)
158 # We give non defaut priority, has we want header parsing to be done before normal
159 # priority triggers are called.
160 host.trigger.add("message_received", self.message_received_trigger, priority=50)
157 161
158 def quote_value(self, value: str) -> str: 162 def quote_value(self, value: str) -> str:
159 """Quote a value if it contain special characters 163 """Quote a value if it contain special characters
160 164
161 @param value: Value to quote if necessary. 165 @param value: Value to quote if necessary.
239 headers = HeadersData.from_element(message_elt) 243 headers = HeadersData.from_element(message_elt)
240 except exceptions.NotFound: 244 except exceptions.NotFound:
241 pass 245 pass
242 else: 246 else:
243 247
244 def post_treat_addr(mess_data: MessageData): 248 def post_treat_addr(mess_data: MessageData) -> MessageData:
245 """Add the headers metadata to the message data""" 249 """Add the headers metadata to the message data"""
246 if headers.keywords: 250 if headers.keywords:
247 # We move keywords to a list of string in extra's "keywords" field. 251 # We move keywords to a list of string in extra's "keywords" field.
248 mess_data["extra"]["keywords"] = self.unquote_values(headers.keywords) 252 mess_data["extra"]["keywords"] = self.unquote_values(headers.keywords)
249 headers.keywords = None 253 headers.keywords = None