diff options
author | Lance Stout <lancestout@gmail.com> | 2012-02-19 20:28:31 -0800 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-02-19 20:28:31 -0800 |
commit | e3d596c9fa1a8c138df0ebd97e90c6d510b77929 (patch) | |
tree | 9b97923bb42b3fe1552941aa714b62a34d3e3e2c | |
parent | ecd6ad69303466029e6498f9927964d9ee9e631b (diff) | |
download | slixmpp-e3d596c9fa1a8c138df0ebd97e90c6d510b77929.tar.gz slixmpp-e3d596c9fa1a8c138df0ebd97e90c6d510b77929.tar.bz2 slixmpp-e3d596c9fa1a8c138df0ebd97e90c6d510b77929.tar.xz slixmpp-e3d596c9fa1a8c138df0ebd97e90c6d510b77929.zip |
Update XEP-0085 plugin to work with both ElementTree and cElementTree
Each state element must have its own stanza class now. A stanza class
with an empty name field causes errors in ElementTree, even though
it works fine with cElementTree.
-rw-r--r-- | sleekxmpp/plugins/xep_0085/chat_states.py | 6 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0085/stanza.py | 20 | ||||
-rw-r--r-- | tests/test_stanza_xep_0085.py | 6 |
3 files changed, 30 insertions, 2 deletions
diff --git a/sleekxmpp/plugins/xep_0085/chat_states.py b/sleekxmpp/plugins/xep_0085/chat_states.py index e95434d2..6f7cfddf 100644 --- a/sleekxmpp/plugins/xep_0085/chat_states.py +++ b/sleekxmpp/plugins/xep_0085/chat_states.py @@ -37,7 +37,11 @@ class xep_0085(base_plugin): StanzaPath('message@chat_state=%s' % state), self._handle_chat_state)) - register_stanza_plugin(Message, ChatState) + 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 post_init(self): base_plugin.post_init(self) diff --git a/sleekxmpp/plugins/xep_0085/stanza.py b/sleekxmpp/plugins/xep_0085/stanza.py index 8c46758c..73c109ac 100644 --- a/sleekxmpp/plugins/xep_0085/stanza.py +++ b/sleekxmpp/plugins/xep_0085/stanza.py @@ -71,3 +71,23 @@ class ChatState(ElementBase): 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' diff --git a/tests/test_stanza_xep_0085.py b/tests/test_stanza_xep_0085.py index b08404e2..61784e47 100644 --- a/tests/test_stanza_xep_0085.py +++ b/tests/test_stanza_xep_0085.py @@ -4,7 +4,11 @@ import sleekxmpp.plugins.xep_0085 as xep_0085 class TestChatStates(SleekTest): def setUp(self): - register_stanza_plugin(Message, xep_0085.ChatState) + register_stanza_plugin(Message, xep_0085.stanza.Active) + register_stanza_plugin(Message, xep_0085.stanza.Composing) + register_stanza_plugin(Message, xep_0085.stanza.Gone) + register_stanza_plugin(Message, xep_0085.stanza.Inactive) + register_stanza_plugin(Message, xep_0085.stanza.Paused) def testCreateChatState(self): """Testing creating chat states.""" |