Mercurial > libervia-backend
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 |