annotate sat/plugins/plugin_xep_0422.py @ 3913:944f51f9c2b4

core (xmpp): make `send` a blocking method, fix `sendMessageData` calls: original `send` method is blocking, and it is used as such by Wokkel and thus can't be changed to an async method easily. However, an Async method is necessary to have an async trigger at the very end of the send workflow for end-to-end encryption. To workaround that, `send` is an async method which call `a_send`, an async method which actually does the sending. This way legacy method can still call `send` while `a_send` can be await otherwise. Fix calls to `sendMessageData`: the method now being an `async` one, `ensureDeferred` had to be used in some calls.
author Goffi <goffi@goffi.org>
date Sat, 24 Sep 2022 16:31:39 +0200
parents 60724ff3f273
children 524856bd7b19
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from sat.core.constants import Const as C
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 from sat.core.i18n import _
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 from sat.core.log import getLogger
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 from sat.core.core_types import SatXMPPEntity
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 from sat.memory.sqla_mapping import History
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 from sat.tools.common.async_utils import async_lru
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
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 host.registerNamespace("fasten", NS_FASTEN)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
64
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
65 def getHandler(self, __):
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
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 def applyToElt(
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,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 external: Optional[List[Union[str, Tuple[str, str]]]] = None
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:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
96 apply_to_elt["clear"] = C.boolConst(clear)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
97 if shell is not None:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
98 apply_to_elt["shell"] = C.boolConst(shell)
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)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 async def getFastenedElts(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
115 self,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
116 client: SatXMPPEntity,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 message_elt: domish.Element
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
118 ) -> Optional[FastenMetadata]:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 """Get fastened elements
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 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
122 """
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
123 try:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
124 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
125 except StopIteration:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 return None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
127 else:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
128 origin_id = apply_to_elt.getAttribute("id")
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
129 if not origin_id:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
130 log.warning(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
131 f"Received invalid fastening message: {message_elt.toXml()}"
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
132 )
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 elements = apply_to_elt.children
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 if not elements:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 log.warning(f"No element to fasten: {message_elt.toXml()}")
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 return None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
138 history = await self.host.memory.storage.get(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 client,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
140 History,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
141 History.origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
142 origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
143 (History.messages, History.subjects, History.thread)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
144 )
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
145 return FastenMetadata(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
146 elements,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
147 origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
148 history,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
149 C.bool(apply_to_elt.getAttribute("clear", C.BOOL_FALSE)),
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
150 C.bool(apply_to_elt.getAttribute("shell", C.BOOL_FALSE)),
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
151 )
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
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
154 @implementer(disco.IDisco)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
155 class XEP_0422_handler(xmlstream.XMPPHandler):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
156
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
157 def getDiscoInfo(self, __, target, nodeIdentifier=""):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
158 return [disco.DiscoFeature(NS_FASTEN)]
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
159
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
160 def getDiscoItems(self, requestor, target, nodeIdentifier=""):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
161 return []