diff options
Diffstat (limited to 'sleekxmpp/plugins/xep_0085')
-rw-r--r-- | sleekxmpp/plugins/xep_0085/__init__.py | 19 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0085/chat_states.py | 56 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0085/stanza.py | 94 |
3 files changed, 0 insertions, 169 deletions
diff --git a/sleekxmpp/plugins/xep_0085/__init__.py b/sleekxmpp/plugins/xep_0085/__init__.py deleted file mode 100644 index 445d5059..00000000 --- a/sleekxmpp/plugins/xep_0085/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permissio -""" - -from sleekxmpp.plugins.base import register_plugin - -from sleekxmpp.plugins.xep_0085.stanza import ChatState -from sleekxmpp.plugins.xep_0085.chat_states import XEP_0085 - - -register_plugin(XEP_0085) - - -# Retain some backwards compatibility -xep_0085 = XEP_0085 diff --git a/sleekxmpp/plugins/xep_0085/chat_states.py b/sleekxmpp/plugins/xep_0085/chat_states.py deleted file mode 100644 index 17f82afd..00000000 --- a/sleekxmpp/plugins/xep_0085/chat_states.py +++ /dev/null @@ -1,56 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permissio -""" - -import logging - -import sleekxmpp -from sleekxmpp.stanza import Message -from sleekxmpp.xmlstream.handler import Callback -from sleekxmpp.xmlstream.matcher import StanzaPath -from sleekxmpp.xmlstream import register_stanza_plugin, ElementBase, ET -from sleekxmpp.plugins import BasePlugin -from sleekxmpp.plugins.xep_0085 import stanza, ChatState - - -log = logging.getLogger(__name__) - - -class XEP_0085(BasePlugin): - - """ - XEP-0085 Chat State Notifications - """ - - name = 'xep_0085' - description = 'XEP-0085: Chat State Notifications' - dependencies = set(['xep_0030']) - stanza = stanza - - def plugin_init(self): - self.xmpp.register_handler( - Callback('Chat State', - StanzaPath('message/chat_state'), - self._handle_chat_state)) - - register_stanza_plugin(Message, stanza.Active) - register_stanza_plugin(Message, stanza.Composing) - register_stanza_plugin(Message, stanza.Gone) - register_stanza_plugin(Message, stanza.Inactive) - register_stanza_plugin(Message, stanza.Paused) - - def plugin_end(self): - self.xmpp.remove_handler('Chat State') - - def session_bind(self, jid): - self.xmpp.plugin['xep_0030'].add_feature(ChatState.namespace) - - def _handle_chat_state(self, msg): - state = msg['chat_state'] - log.debug("Chat State: %s, %s", state, msg['from'].jid) - self.xmpp.event('chatstate', msg) - self.xmpp.event('chatstate_%s' % state, msg) diff --git a/sleekxmpp/plugins/xep_0085/stanza.py b/sleekxmpp/plugins/xep_0085/stanza.py deleted file mode 100644 index c2cafb19..00000000 --- a/sleekxmpp/plugins/xep_0085/stanza.py +++ /dev/null @@ -1,94 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permissio -""" - -import sleekxmpp -from sleekxmpp.xmlstream import ElementBase, ET - - -class ChatState(ElementBase): - - """ - Example chat state stanzas: - <message> - <active xmlns="http://jabber.org/protocol/chatstates" /> - </message> - - <message> - <paused xmlns="http://jabber.org/protocol/chatstates" /> - </message> - - Stanza Interfaces: - chat_state - - Attributes: - states - - Methods: - get_chat_state - set_chat_state - del_chat_state - """ - - name = '' - namespace = 'http://jabber.org/protocol/chatstates' - plugin_attrib = 'chat_state' - interfaces = set(('chat_state',)) - sub_interfaces = interfaces - is_extension = True - - states = set(('active', 'composing', 'gone', 'inactive', 'paused')) - - def setup(self, xml=None): - self.xml = ET.Element('') - return True - - def get_chat_state(self): - parent = self.parent() - for state in self.states: - state_xml = parent.find('{%s}%s' % (self.namespace, state)) - if state_xml is not None: - self.xml = state_xml - return state - return '' - - def set_chat_state(self, state): - self.del_chat_state() - parent = self.parent() - if state in self.states: - self.xml = ET.Element('{%s}%s' % (self.namespace, state)) - parent.append(self.xml) - elif state not in [None, '']: - raise ValueError('Invalid chat state') - - def del_chat_state(self): - parent = self.parent() - for state in self.states: - state_xml = parent.find('{%s}%s' % (self.namespace, state)) - if state_xml is not None: - self.xml = ET.Element('') - parent.xml.remove(state_xml) - - -class Active(ChatState): - name = 'active' - - -class Composing(ChatState): - name = 'composing' - - -class Gone(ChatState): - name = 'gone' - - -class Inactive(ChatState): - name = 'inactive' - - -class Paused(ChatState): - name = 'paused' |