Mercurial > libervia-backend
diff src/core/xmpp.py @ 666:2a7185b8452c
core: added SatIdentityHandler for Disco Identity, and set identity to "client/pc/Salut à Toi"
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 05 Nov 2013 22:40:55 +0100 |
parents | 8004c7d4aba7 |
children | ffb716804580 |
line wrap: on
line diff
--- a/src/core/xmpp.py Tue Nov 05 22:40:46 2013 +0100 +++ b/src/core/xmpp.py Tue Nov 05 22:40:55 2013 +0100 @@ -19,13 +19,19 @@ from twisted.internet import task, defer from twisted.words.protocols.jabber import jid, xmlstream -from wokkel import client, disco, xmppim, generic, compat, delay +from wokkel import client, disco, xmppim, generic, compat, delay, iwokkel from logging import debug, info, warning, error from sat.core import exceptions from calendar import timegm +from zope.interface import implements +try: + from twisted.words.protocols.xmlstream import XMPPHandler +except ImportError: + from wokkel.subprotocols import XMPPHandler class SatXMPPClient(client.XMPPClient): + implements(iwokkel.IDisco) def __init__(self, host_app, profile, user_jid, password, host=None, port=5222): client.XMPPClient.__init__(self, user_jid, password, host, port) @@ -451,3 +457,16 @@ # disco features, and when the server (seen on ejabberd) generate its own hash for security check # it reject our features (resulting in e.g. no notification on PEP) return generic.VersionHandler.getDiscoInfo(self, requestor, target, None) + +class SatIdentityHandler(XMPPHandler): + """ Manage disco Identity of SàT. Currently, we use "client/pc/Salut à Toi", but as + SàT is multi-frontends and can be used on mobile devices, as a bot, with a web frontend, + etc, we should implement a way to dynamically update identities through the bridge """ + #TODO: dynamic identity update (see docstring). Note that a XMPP entity can have several identities + implements(iwokkel.IDisco) + + def getDiscoInfo(self, requestor, target, nodeIdentifier=''): + return [disco.DiscoIdentity(u"client", u"pc", u"Salut à Toi")] + + def getDiscoItems(self, requestor, target, nodeIdentifier=''): + return []