annotate sat/plugins/plugin_exp_invitation_file.py @ 3011:93da7c6f8e0c

plugin XEP-0198: retrieve missing messages + send buffered ones on hot reconnection: Missing one2one messages are now retrieved with MAM on hot reconnection, and buffered ones (which have most probably not been received by the server) are resent at the end of the reconnection workflow. IQ results are not re-sent on hot reconnection, as they don't make sense anymore with a new session. fix 330
author Goffi <goffi@goffi.org>
date Wed, 17 Jul 2019 09:28:35 +0200
parents b256e90612d0
children ab2696e34d29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SAT plugin to detect language (experimental)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2019 Jérôme Poisson (goffi@goffi.org)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 from sat.core.i18n import _
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.constants import Const as C
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.core.log import getLogger
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
23 from sat.tools.common import data_format
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from twisted.words.protocols.jabber import jid
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 log = getLogger(__name__)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
27
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
28
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 PLUGIN_INFO = {
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 C.PI_NAME: "File Sharing Invitation",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 C.PI_IMPORT_NAME: "FILE_SHARING_INVITATION",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 C.PI_TYPE: "EXP",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 C.PI_PROTOCOLS: [],
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 C.PI_DEPENDENCIES: ["XEP-0329", u"INVITATION"],
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 C.PI_RECOMMENDATIONS: [],
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 C.PI_MAIN: "FileSharingInvitation",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 C.PI_HANDLER: "no",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 C.PI_DESCRIPTION: _(u"Experimental handling of invitations for file sharing"),
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 }
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
40
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
41
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 class FileSharingInvitation(object):
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
43
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 def __init__(self, host):
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 log.info(_(u"File Sharing Invitation plugin initialization"))
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 self.host = host
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 ns_fis = host.getNamespace(u"fis")
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
48 host.plugins[u"INVITATION"].registerNamespace(ns_fis, self.onInvitation)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 host.bridge.addMethod(
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 "FISInvite",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 ".plugin",
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
52 in_sign="ssssssss",
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 out_sign="",
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 method=self._sendFileSharingInvitation,
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 )
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
56
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 def _sendFileSharingInvitation(
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 self, invitee_jid_s, service_s, repos_type=None, namespace=None, path=None,
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
59 name=None, extra_s=u'', profile_key=C.PROF_KEY_NONE):
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 client = self.host.getClient(profile_key)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 invitee_jid = jid.JID(invitee_jid_s)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 service = jid.JID(service_s)
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
63 extra = data_format.deserialise(extra_s)
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 return self.host.plugins[u"INVITATION"].sendFileSharingInvitation(
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
65 client, invitee_jid, service, repos_type=repos_type or None,
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
66 namespace=namespace or None, path=path or None, name=name or None,
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
67 extra=extra)
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
68
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
69 def onInvitation(self, client, name, extra, service, repos_type, namespace, path):
2917
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 if repos_type == u"files":
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 type_human = _(u"file sharing")
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 elif repos_type == u"photos":
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 type_human = _(u"photos album")
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 else:
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 log.warning(u"Unknown repository type: {repos_type}".format(
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 repos_type=repos_type))
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 repos_type = u"file"
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 type_human = _(u"file sharing")
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
79 log.info(_(
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
80 u'{profile} has received an invitation for a files repository ({type_human}) '
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 u'with namespace "{namespace}" at path [{path}]').format(
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 profile=client.profile, type_human=type_human, namespace=namespace, path=path)
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
83 )
adf6e33a3e50 plugin invitation file: wrong plugin had been uploaded:
Goffi <goffi@goffi.org>
parents:
diff changeset
84 return self.host.plugins[u'LIST_INTEREST'].registerFileSharing(
2931
b256e90612d0 plugins invitation*, events: added an extra parameter and use it to keep a thumnail URL
Goffi <goffi@goffi.org>
parents: 2917
diff changeset
85 client, service, repos_type, namespace, path, name, extra)