diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2016-08-26 22:20:59 +0100 |
---|---|---|
committer | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2016-08-26 22:42:24 +0100 |
commit | d099e353a4e2804a58153937719259518ab8439e (patch) | |
tree | 30871a2f44e437919a9e65d634434f98a582f442 | |
parent | 1e4a301c6e71e7a8ad9d2f927b19ba0d9e419e75 (diff) | |
download | slixmpp-d099e353a4e2804a58153937719259518ab8439e.tar.gz slixmpp-d099e353a4e2804a58153937719259518ab8439e.tar.bz2 slixmpp-d099e353a4e2804a58153937719259518ab8439e.tar.xz slixmpp-d099e353a4e2804a58153937719259518ab8439e.zip |
Implement XEP-0333: Chat Markers.
-rw-r--r-- | slixmpp/plugins/xep_0333/__init__.py | 14 | ||||
-rw-r--r-- | slixmpp/plugins/xep_0333/hints.py | 53 | ||||
-rw-r--r-- | slixmpp/plugins/xep_0333/stanza.py | 32 |
3 files changed, 99 insertions, 0 deletions
diff --git a/slixmpp/plugins/xep_0333/__init__.py b/slixmpp/plugins/xep_0333/__init__.py new file mode 100644 index 00000000..472971d6 --- /dev/null +++ b/slixmpp/plugins/xep_0333/__init__.py @@ -0,0 +1,14 @@ +""" + slixmpp: The Slick XMPP Library + Copyright (C) 2016 Emmanuel Gil Peyrot + This file is part of slixmpp. + + See the file LICENSE for copying permission. +""" + +from slixmpp.plugins.base import register_plugin + +from slixmpp.plugins.xep_0333.stanza import Markable, Received, Displayed, Acknowledged +from slixmpp.plugins.xep_0333.hints import XEP_0333 + +register_plugin(XEP_0333) diff --git a/slixmpp/plugins/xep_0333/hints.py b/slixmpp/plugins/xep_0333/hints.py new file mode 100644 index 00000000..932bf6d5 --- /dev/null +++ b/slixmpp/plugins/xep_0333/hints.py @@ -0,0 +1,53 @@ +""" + slixmpp: The Slick XMPP Library + Copyright (C) 2016 Emmanuel Gil Peyrot + This file is part of slixmpp. + + See the file LICENSE for copying permission. +""" + +import logging + +from slixmpp import Message +from slixmpp.plugins import BasePlugin +from slixmpp.xmlstream import register_stanza_plugin +from slixmpp.plugins.xep_0333 import stanza, Markable, Received, Displayed, Acknowledged + +log = logging.getLogger(__name__) + +class XEP_0333(BasePlugin): + + name = 'xep_0333' + description = 'XEP-0333: Chat Markers' + stanza = stanza + + def plugin_init(self): + register_stanza_plugin(Message, Markable) + register_stanza_plugin(Message, Received) + register_stanza_plugin(Message, Displayed) + register_stanza_plugin(Message, Acknowledged) + + self.xmpp.register_handler( + Callback('Received Chat Marker', + StanzaPath('message/received'), + self._handle_received)) + self.xmpp.register_handler( + Callback('Displayed Chat Marker', + StanzaPath('message/displayed'), + self._handle_displayed)) + self.xmpp.register_handler( + Callback('Acknowledged Chat Marker', + StanzaPath('message/acknowledged'), + self._handle_acknowledged)) + + def _handle_received(self, message): + self.xmpp.event('marker_received', message) + self.xmpp.event('marker', message) + + def _handle_displayed(self, message): + self.xmpp.event('marker_displayed', message) + self.xmpp.event('marker', message) + + def _handle_acknowledged(self, message): + self.xmpp.event('marker_acknowledged', message) + self.xmpp.event('marker', message) diff --git a/slixmpp/plugins/xep_0333/stanza.py b/slixmpp/plugins/xep_0333/stanza.py new file mode 100644 index 00000000..42cfc21a --- /dev/null +++ b/slixmpp/plugins/xep_0333/stanza.py @@ -0,0 +1,32 @@ +""" + slixmpp: The Slick XMPP Library + Copyright (C) 2016 Emmanuel Gil Peyrot + This file is part of slixmpp. + + See the file LICENSE for copying permission. +""" + +from slixmpp.xmlstream import ElementBase + +class Markable(ElementBase): + name = 'markable' + plugin_attrib = 'markable' + namespace = 'urn:xmpp:chat-markers:0' + +class Received(ElementBase): + name = 'received' + plugin_attrib = 'received' + namespace = 'urn:xmpp:chat-markers:0' + interfaces = {'id'} + +class Displayed(ElementBase): + name = 'displayed' + plugin_attrib = 'displayed' + namespace = 'urn:xmpp:chat-markers:0' + interfaces = {'id'} + +class Acknowledged(ElementBase): + name = 'acknowledged' + plugin_attrib = 'acknowledged' + namespace = 'urn:xmpp:chat-markers:0' + interfaces = {'id'} |