Mercurial > libervia-backend
comparison libervia/backend/plugins/plugin_xep_0203.py @ 4071:4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 02 Jun 2023 11:49:51 +0200 |
parents | sat/plugins/plugin_xep_0203.py@524856bd7b19 |
children |
comparison
equal
deleted
inserted
replaced
4070:d10748475025 | 4071:4b842c1fb686 |
---|---|
1 #!/usr/bin/env python3 | |
2 | |
3 | |
4 # SAT plugin for Delayed Delivery (XEP-0203) | |
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org) | |
6 # Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org) | |
7 | |
8 # This program is free software: you can redistribute it and/or modify | |
9 # it under the terms of the GNU Affero General Public License as published by | |
10 # the Free Software Foundation, either version 3 of the License, or | |
11 # (at your option) any later version. | |
12 | |
13 # This program is distributed in the hope that it will be useful, | |
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 # GNU Affero General Public License for more details. | |
17 | |
18 # You should have received a copy of the GNU Affero General Public License | |
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 | |
21 from libervia.backend.core.i18n import _ | |
22 from libervia.backend.core.constants import Const as C | |
23 from libervia.backend.core.log import getLogger | |
24 | |
25 log = getLogger(__name__) | |
26 | |
27 from wokkel import disco, iwokkel, delay | |
28 | |
29 try: | |
30 from twisted.words.protocols.xmlstream import XMPPHandler | |
31 except ImportError: | |
32 from wokkel.subprotocols import XMPPHandler | |
33 from zope.interface import implementer | |
34 | |
35 | |
36 NS_DD = "urn:xmpp:delay" | |
37 | |
38 PLUGIN_INFO = { | |
39 C.PI_NAME: "Delayed Delivery", | |
40 C.PI_IMPORT_NAME: "XEP-0203", | |
41 C.PI_TYPE: "XEP", | |
42 C.PI_PROTOCOLS: ["XEP-0203"], | |
43 C.PI_MAIN: "XEP_0203", | |
44 C.PI_HANDLER: "yes", | |
45 C.PI_DESCRIPTION: _("""Implementation of Delayed Delivery"""), | |
46 } | |
47 | |
48 | |
49 class XEP_0203(object): | |
50 def __init__(self, host): | |
51 log.info(_("Delayed Delivery plugin initialization")) | |
52 self.host = host | |
53 | |
54 def get_handler(self, client): | |
55 return XEP_0203_handler(self, client.profile) | |
56 | |
57 def delay(self, stamp, sender=None, desc="", parent=None): | |
58 """Build a delay element, eventually append it to the given parent element. | |
59 | |
60 @param stamp (datetime): offset-aware timestamp of the original sending. | |
61 @param sender (JID): entity that originally sent or delayed the message. | |
62 @param desc (unicode): optional natural language description. | |
63 @param parent (domish.Element): add the delay element to this element. | |
64 @return: the delay element (domish.Element) | |
65 """ | |
66 elt = delay.Delay(stamp, sender).toElement() | |
67 if desc: | |
68 elt.addContent(desc) | |
69 if parent: | |
70 parent.addChild(elt) | |
71 return elt | |
72 | |
73 | |
74 @implementer(iwokkel.IDisco) | |
75 class XEP_0203_handler(XMPPHandler): | |
76 | |
77 def __init__(self, plugin_parent, profile): | |
78 self.plugin_parent = plugin_parent | |
79 self.host = plugin_parent.host | |
80 self.profile = profile | |
81 | |
82 def getDiscoInfo(self, requestor, target, nodeIdentifier=""): | |
83 return [disco.DiscoFeature(NS_DD)] | |
84 | |
85 def getDiscoItems(self, requestor, target, nodeIdentifier=""): | |
86 return [] |