Mercurial > libervia-backend
annotate libervia/backend/plugins/plugin_xep_0422.py @ 4309:b56b1eae7994
component email gateway: add multicasting:
XEP-0033 multicasting is now supported both for incoming and outgoing messages. XEP-0033
metadata are converted to suitable Email headers and vice versa.
Email address and JID are both supported, and delivery is done by the gateway when
suitable on incoming messages.
rel 450
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 26 Sep 2024 16:12:01 +0200 |
parents | 0d7bb4df2343 |
children |
rev | line source |
---|---|
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/env python3 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 # Copyright (C) 2009-2022 Jérôme Poisson (goffi@goffi.org) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
5 # This program is free software: you can redistribute it and/or modify |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 # it under the terms of the GNU Affero General Public License as published by |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # the Free Software Foundation, either version 3 of the License, or |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # (at your option) any later version. |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # This program is distributed in the hope that it will be useful, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # GNU Affero General Public License for more details. |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # You should have received a copy of the GNU Affero General Public License |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 from typing import Optional, List, Tuple, Union, NamedTuple |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 from collections import namedtuple |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 from twisted.words.protocols.jabber import xmlstream |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from twisted.words.xish import domish |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from wokkel import disco |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from zope.interface import implementer |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 |
4071
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
26 from libervia.backend.core.constants import Const as C |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
27 from libervia.backend.core.i18n import _ |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
28 from libervia.backend.core.log import getLogger |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
29 from libervia.backend.core.core_types import SatXMPPEntity |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
30 from libervia.backend.memory.sqla_mapping import History |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
31 from libervia.backend.tools.common.async_utils import async_lru |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 log = getLogger(__name__) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 PLUGIN_INFO = { |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 C.PI_NAME: "Message Fastening", |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 C.PI_IMPORT_NAME: "XEP-0422", |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 C.PI_TYPE: "XEP", |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 C.PI_MODES: C.PLUG_MODE_BOTH, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 C.PI_PROTOCOLS: ["XEP-0359", "XEP-0422"], |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 C.PI_MAIN: "XEP_0422", |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 C.PI_HANDLER: "yes", |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 C.PI_DESCRIPTION: _("""Implementation Message Fastening"""), |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 } |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 NS_FASTEN = "urn:xmpp:fasten:0" |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 class FastenMetadata(NamedTuple): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 elements: List[domish.Element] |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 id: str |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 history: Optional[History] |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 clear: bool |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
55 shell: bool |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
57 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
58 class XEP_0422(object): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
59 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
60 def __init__(self, host): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 log.info(_("XEP-0422 (Message Fastening) plugin initialization")) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 self.host = host |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
63 host.register_namespace("fasten", NS_FASTEN) |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
64 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
65 def get_handler(self, __): |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
66 return XEP_0422_handler() |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
67 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
68 def apply_to_elt( |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
69 self, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
70 message_elt: domish.Element, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
71 origin_id: str, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
72 clear: Optional[bool] = None, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 shell: Optional[bool] = None, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 children: Optional[List[domish.Element]] = None, |
4270
0d7bb4df2343
Reformatted code base using black.
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
75 external: Optional[List[Union[str, Tuple[str, str]]]] = None, |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
76 ) -> domish.Element: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 """Generate, add and return <apply-to> element |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
78 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
79 @param message_elt: wrapping <message> element |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
80 @param origin_id: origin ID of the target message |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
81 @param clear: set to True to remove a fastening |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
82 @param shell: set to True when using e2ee shell |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
83 cf. https://xmpp.org/extensions/xep-0422.html#encryption |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
84 @param children: element to fasten to the target message |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
85 <apply-to> element is returned, thus children can also easily be added |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
86 afterwards |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
87 @param external: <external> element to add |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
88 cf. https://xmpp.org/extensions/xep-0422.html#external-payloads |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
89 the list items can either be a str with only the element name, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 or a tuple which must then be (namespace, name) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
91 @return: <apply-to> element, which is already added to the wrapping message_elt |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
92 """ |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
93 apply_to_elt = message_elt.addElement((NS_FASTEN, "apply-to")) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
94 apply_to_elt["id"] = origin_id |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
95 if clear is not None: |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
96 apply_to_elt["clear"] = C.bool_const(clear) |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
97 if shell is not None: |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
98 apply_to_elt["shell"] = C.bool_const(shell) |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
99 if children is not None: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
100 for child in children: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
101 apply_to_elt.addChild(child) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
102 if external is not None: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
103 for ext in external: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
104 external_elt = apply_to_elt.addElement("external") |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
105 if isinstance(ext, str): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
106 external_elt["name"] = ext |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
107 else: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 ns, name = ext |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
109 external_elt["name"] = name |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
110 external_elt["element-namespace"] = ns |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
111 return apply_to_elt |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
112 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
113 @async_lru(maxsize=5) |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3799
diff
changeset
|
114 async def get_fastened_elts( |
4270
0d7bb4df2343
Reformatted code base using black.
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
115 self, client: SatXMPPEntity, message_elt: domish.Element |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
116 ) -> Optional[FastenMetadata]: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
117 """Get fastened elements |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
118 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
119 if the message contains no <apply-to> element, None is returned |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
120 """ |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
121 try: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
122 apply_to_elt = next(message_elt.elements(NS_FASTEN, "apply-to")) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
123 except StopIteration: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
124 return None |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
125 else: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
126 origin_id = apply_to_elt.getAttribute("id") |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
127 if not origin_id: |
4270
0d7bb4df2343
Reformatted code base using black.
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
128 log.warning(f"Received invalid fastening message: {message_elt.toXml()}") |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
129 return None |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
130 elements = apply_to_elt.children |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
131 if not elements: |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
132 log.warning(f"No element to fasten: {message_elt.toXml()}") |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
133 return None |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
134 history = await self.host.memory.storage.get( |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
135 client, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
136 History, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
137 History.origin_id, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
138 origin_id, |
4270
0d7bb4df2343
Reformatted code base using black.
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
139 (History.messages, History.subjects, History.thread), |
3799
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
140 ) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
141 return FastenMetadata( |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
142 elements, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
143 origin_id, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
144 history, |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
145 C.bool(apply_to_elt.getAttribute("clear", C.BOOL_FALSE)), |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
146 C.bool(apply_to_elt.getAttribute("shell", C.BOOL_FALSE)), |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
147 ) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
148 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
149 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
150 @implementer(disco.IDisco) |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
151 class XEP_0422_handler(xmlstream.XMPPHandler): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
152 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
153 def getDiscoInfo(self, __, target, nodeIdentifier=""): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
154 return [disco.DiscoFeature(NS_FASTEN)] |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
155 |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
156 def getDiscoItems(self, requestor, target, nodeIdentifier=""): |
60724ff3f273
plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
157 return [] |