annotate sat/plugins/plugin_exp_list_of_interest.py @ 3317:83f25da66bec

core (memory): files are now public by default except for those in root directory: using public permissions by default makes permissions change more easy as we don't have to recursively change all permissions of sub files when changing directory. Root directories are private by default.
author Goffi <goffi@goffi.org>
date Sat, 01 Aug 2020 16:02:41 +0200
parents 9a174abafdee
children 56ee491c0df6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SAT plugin to detect language (experimental)
3136
9d0df638c8b4 dates update
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
5 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org)
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 from sat.core.i18n import _
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.constants import Const as C
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.core.log import getLogger
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
23 from sat.tools.common import data_format
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from wokkel import disco, iwokkel, pubsub
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
25 from zope.interface import implementer
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from twisted.internet import defer
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
27 from twisted.words.protocols.jabber import error as jabber_error, jid
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 from twisted.words.protocols.jabber.xmlstream import XMPPHandler
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 from twisted.words.xish import domish
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
30
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 log = getLogger(__name__)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
32
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
33
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 PLUGIN_INFO = {
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 C.PI_NAME: "List of Interest",
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 C.PI_IMPORT_NAME: "LIST_INTEREST",
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 C.PI_TYPE: "EXP",
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 C.PI_PROTOCOLS: [],
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
39 C.PI_DEPENDENCIES: ["XEP-0060", "XEP-0329"],
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 C.PI_RECOMMENDATIONS: [],
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 C.PI_MAIN: "ListInterest",
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 C.PI_HANDLER: "yes",
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
43 C.PI_DESCRIPTION: _("Experimental handling of interesting XMPP locations"),
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 }
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
45
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 NS_LIST_INTEREST = "https://salut-a-toi/protocol/list-interest:0"
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
47
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 class ListInterest(object):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 namespace = NS_LIST_INTEREST
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
51
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 def __init__(self, host):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
53 log.info(_("List of Interest plugin initialization"))
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 self.host = host
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 self._p = self.host.plugins["XEP-0060"]
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
56 host.bridge.addMethod(
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
57 "interestsList",
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
58 ".plugin",
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
59 in_sign="ssss",
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
60 out_sign="aa{ss}",
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
61 method=self._listInterests,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
62 async_=True,
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
63 )
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
64 host.bridge.addMethod(
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
65 "interestsRegisterFileSharing",
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
66 ".plugin",
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
67 in_sign="sssssss",
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
68 out_sign="",
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
69 method=self._registerFileSharing,
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
70 async_=True,
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
71 )
3303
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
72 host.bridge.addMethod(
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
73 "interestRetract",
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
74 ".plugin",
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
75 in_sign="sss",
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
76 out_sign="",
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
77 method=self._interestRetract,
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
78 async_=True,
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
79 )
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
80
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 def getHandler(self, client):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 return ListInterestHandler(self)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
83
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
84 @defer.inlineCallbacks
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
85 def createNode(self, client):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 try:
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 # TODO: check auto-create, no need to create node first if available
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
88 options = {self._p.OPT_ACCESS_MODEL: self._p.ACCESS_WHITELIST}
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
89 yield self._p.createNode(
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 client,
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
91 client.jid.userhostJID(),
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 nodeIdentifier=NS_LIST_INTEREST,
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 options=options,
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
94 )
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
95 except jabber_error.StanzaError as e:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
96 if e.condition == "conflict":
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
97 log.debug(_("requested node already exists"))
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
98
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
99 @defer.inlineCallbacks
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
100 def registerPubsub(self, client, namespace, service, node, item_id=None,
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
101 creator=False, name=None, element=None, extra=None):
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 """Register an interesting element in personal list
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
103
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
104 @param namespace(unicode): namespace of the interest
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
105 this is used as a cache, to avoid the need to retrieve the item only to get
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 its namespace
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
107 @param service(jid.JID): target pubsub service
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 @param node(unicode): target pubsub node
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
109 @param item_id(unicode, None): target pubsub id
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 @param creator(bool): True if client's profile is the creator of the node
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
111 This is used a cache, to avoid the need to retrieve affiliations
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
112 @param name(unicode, None): name of the interest
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
113 @param element(domish.Element, None): element to attach
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 may be used to cache some extra data
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
115 @param extra(dict, None): extra data, key can be:
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
116 - thumb_url: http(s) URL of a thumbnail
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 """
2940
ef554aca3eb1 plugin list interest: initialise extra with an empty dict if not set in registerPubsub
Goffi <goffi@goffi.org>
parents: 2936
diff changeset
118 if extra is None:
ef554aca3eb1 plugin list interest: initialise extra with an empty dict if not set in registerPubsub
Goffi <goffi@goffi.org>
parents: 2936
diff changeset
119 extra = {}
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
120 yield self.createNode(client)
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
121 interest_elt = domish.Element((NS_LIST_INTEREST, "interest"))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
122 interest_elt["namespace"] = namespace
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
123 if name is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
124 interest_elt['name'] = name
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
125 thumb_url = extra.get('thumb_url')
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
126 if thumb_url:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
127 interest_elt['thumb_url'] = thumb_url
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
128 pubsub_elt = interest_elt.addElement("pubsub")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
129 pubsub_elt["service"] = service.full()
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
130 pubsub_elt["node"] = node
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
131 if item_id is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
132 pubsub_elt["item"] = item_id
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
133 if creator:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
134 pubsub_elt["creator"] = C.BOOL_TRUE
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 if element is not None:
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 pubsub_elt.addChild(element)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 item_elt = pubsub.Item(payload=interest_elt)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
138 yield self._p.publish(
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 client, client.jid.userhostJID(), NS_LIST_INTEREST, items=[item_elt]
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
140 )
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
141
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
142 def _registerFileSharing(
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
143 self, service, repos_type, namespace, path, name, extra_raw,
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
144 profile
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
145 ):
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
146 client = self.host.getClient(profile)
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
147 extra = data_format.deserialise(extra_raw)
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
148
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
149 return defer.ensureDeferred(self.registerFileSharing(
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
150 client, jid.JID(service), repos_type or None, namespace or None, path or None,
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
151 name or None, extra
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
152 ))
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
153
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
154
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
155 async def registerFileSharing(
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
156 self, client, service, repos_type=None, namespace=None, path=None, name=None,
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
157 extra=None):
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
158 """Register an interesting file repository in personal list
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
159
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
160 @param service(jid.JID): service of the file repository
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
161 @param repos_type(unicode): type of the repository
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
162 @param namespace(unicode, None): namespace of the repository
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
163 @param path(unicode, None): path of the repository
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
164 @param name(unicode, None): name of the repository
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
165 @param extra(dict, None): same as [registerPubsub]
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
166 """
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
167 if extra is None:
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
168 extra = {}
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
169 await self.createNode(client)
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
170 interest_elt = domish.Element((NS_LIST_INTEREST, "interest"))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
171 interest_elt["namespace"] = self.host.getNamespace("fis")
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
172 if name is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
173 interest_elt['name'] = name
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
174 thumb_url = extra.get('thumb_url')
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
175 if thumb_url:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
176 interest_elt['thumb_url'] = thumb_url
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
177 file_sharing_elt = interest_elt.addElement("file_sharing")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
178 file_sharing_elt["service"] = service.full()
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
179 if repos_type is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
180 file_sharing_elt["type"] = repos_type
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
181 if namespace is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
182 file_sharing_elt["namespace"] = namespace
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
183 if path is not None:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
184 file_sharing_elt["path"] = path
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
185 item_elt = pubsub.Item(payload=interest_elt)
3299
83795ff8a633 plugin list of interest: expose `interestsRegisterFileSharing` to bridge + use coroutines
Goffi <goffi@goffi.org>
parents: 3270
diff changeset
186 await self._p.publish(
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
187 client, client.jid.userhostJID(), NS_LIST_INTEREST, items=[item_elt]
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
188 )
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
189
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
190 def _listInterestsSerialise(self, interests_data):
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
191 interests = []
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
192 for item_elt in interests_data[0]:
3304
9a174abafdee plugin list of interests: added `id` to data + fixed key conflict:
Goffi <goffi@goffi.org>
parents: 3303
diff changeset
193 interest_data = {"id": item_elt['id']}
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
194 interest_elt = item_elt.interest
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
195 if interest_elt.hasAttribute('namespace'):
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
196 interest_data['namespace'] = interest_elt.getAttribute('namespace')
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
197 if interest_elt.hasAttribute('name'):
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
198 interest_data['name'] = interest_elt.getAttribute('name')
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
199 if interest_elt.hasAttribute('thumb_url'):
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
200 interest_data['thumb_url'] = interest_elt.getAttribute('thumb_url')
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
201 elt = interest_elt.firstChildElement()
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
202 if elt.uri != NS_LIST_INTEREST:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
203 log.warning("unexpected child element, ignoring: {xml}".format(
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
204 xml = elt.toXml()))
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
205 continue
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
206 if elt.name == 'pubsub':
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
207 interest_data.update({
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
208 "type": "pubsub",
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
209 "service": elt['service'],
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
210 "node": elt['node'],
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
211 })
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
212 for attr in ('item', 'creator'):
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
213 if elt.hasAttribute(attr):
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
214 interest_data[attr] = elt[attr]
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
215 elif elt.name == 'file_sharing':
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
216 interest_data.update({
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
217 "type": "file_sharing",
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
218 "service": elt['service'],
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
219 })
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
220 if elt.hasAttribute('type'):
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
221 interest_data['subtype'] = elt['type']
3304
9a174abafdee plugin list of interests: added `id` to data + fixed key conflict:
Goffi <goffi@goffi.org>
parents: 3303
diff changeset
222 for attr in ('files_namespace', 'path'):
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
223 if elt.hasAttribute(attr):
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
224 interest_data[attr] = elt[attr]
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
225 else:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
226 log.warning("unknown element, ignoring: {xml}".format(xml=elt.toXml()))
2933
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
227 continue
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
228 interests.append(interest_data)
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
229
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
230 return interests
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
231
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
232 def _listInterests(self, service, node, namespace, profile):
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
233 service = jid.JID(service) if service else None
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
234 node = node or None
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
235 namespace = namespace or None
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
236 client = self.host.getClient(profile)
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
237 d = self.listInterests(client, service, node, namespace)
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
238 d.addCallback(self._listInterestsSerialise)
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
239 return d
47df940738a7 plugin list of interest: added an interestsList bridge method + handle thumb_url
Goffi <goffi@goffi.org>
parents: 2913
diff changeset
240
2913
672e6be3290f plugins sharing invitation, invitation, list of interest: handle invitation to a file sharing repository
Goffi <goffi@goffi.org>
parents: 2912
diff changeset
241 @defer.inlineCallbacks
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
242 def listInterests(self, client, service=None, node=None, namespace=None):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
243 """Retrieve list of interests
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
244
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
245 @param service(jid.JID, None): service to use
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
246 None to use own PEP
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
247 @param node(unicode, None): node to use
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
248 None to use default node
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
249 @param namespace(unicode, None): filter interests of this namespace
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
250 None to retrieve all interests
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
251 @return: same as [XEP_0060.getItems]
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
252 """
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
253 # TODO: if a MAM filter were available, it would improve performances
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
254 if not node:
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
255 node = NS_LIST_INTEREST
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
256 items, metadata = yield self._p.getItems(client, service, node)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
257 if namespace is not None:
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
258 filtered_items = []
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
259 for item in items:
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
260 try:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
261 interest_elt = next(item.elements(NS_LIST_INTEREST, "interest"))
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
262 except StopIteration:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
263 log.warning(_("Missing interest element: {xml}").format(
3270
0c3b7ee2628f plugin list of interest: fixed wrong variable used in a log
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
264 xml=item.toXml()))
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
265 continue
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
266 if interest_elt.getAttribute("namespace") == namespace:
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
267 filtered_items.append(item)
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
268 items = filtered_items
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
269
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
270 defer.returnValue((items, metadata))
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
271
3303
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
272 def _interestRetract(self, service_s, item_id, profile_key):
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
273 d = self._p._retractItem(
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
274 service_s, NS_LIST_INTEREST, item_id, True, profile_key)
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
275 d.addCallback(lambda __: None)
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
276 return d
f17379123571 plugin list of interest: new "interestRetract" method
Goffi <goffi@goffi.org>
parents: 3299
diff changeset
277
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
278
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2940
diff changeset
279 @implementer(iwokkel.IDisco)
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
280 class ListInterestHandler(XMPPHandler):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
281
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
282 def __init__(self, plugin_parent):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
283 self.plugin_parent = plugin_parent
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
284
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
285 def getDiscoInfo(self, requestor, target, nodeIdentifier=""):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
286 return [
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
287 disco.DiscoFeature(NS_LIST_INTEREST),
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
288 ]
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
289
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
290 def getDiscoItems(self, requestor, target, nodeIdentifier=""):
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents:
diff changeset
291 return []