summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0085.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2011-02-24 12:10:29 -0500
committerLance Stout <lancestout@gmail.com>2011-02-24 12:10:29 -0500
commit77251452c106618ab1cfdad546eb224bc9693dea (patch)
treed89c5abe12e9a069996925c8de14119463a732be /sleekxmpp/plugins/xep_0085.py
parent4df3aa569bc8e88b70986022e558ee9024dd7ffb (diff)
downloadslixmpp-77251452c106618ab1cfdad546eb224bc9693dea.tar.gz
slixmpp-77251452c106618ab1cfdad546eb224bc9693dea.tar.bz2
slixmpp-77251452c106618ab1cfdad546eb224bc9693dea.tar.xz
slixmpp-77251452c106618ab1cfdad546eb224bc9693dea.zip
Updated the XEP-0085 plugin.
Can now be used as so: >>> msg['chat_state'] '' >>> msg <message /> >>> msg['chat_state'] = 'paused' >>> msg <message> <paused xmlns="http://jabber.org/protocol/chatstates" /> </message> >>> msg['chat_state'] 'paused' >>> del msg['chat_state'] >>> msg <message />
Diffstat (limited to 'sleekxmpp/plugins/xep_0085.py')
-rw-r--r--sleekxmpp/plugins/xep_0085.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/sleekxmpp/plugins/xep_0085.py b/sleekxmpp/plugins/xep_0085.py
deleted file mode 100644
index 3627e718..00000000
--- a/sleekxmpp/plugins/xep_0085.py
+++ /dev/null
@@ -1,104 +0,0 @@
-"""
- SleekXMPP: The Sleek XMPP Library
- Copyright (C) 2010 Nathanael C. Fritz, Lance J.T. Stout
- This file is part of SleekXMPP.
-
- See the file LICENSE for copying permissio
-"""
-
-import logging
-from . import base
-from .. xmlstream.handler.callback import Callback
-from .. xmlstream.matcher.xpath import MatchXPath
-from .. xmlstream.stanzabase import registerStanzaPlugin, ElementBase, ET, JID
-from .. stanza.message import Message
-
-
-log = logging.getLogger(__name__)
-
-
-class ChatState(ElementBase):
- namespace = 'http://jabber.org/protocol/chatstates'
- plugin_attrib = 'chat_state'
- interface = set(('state',))
- states = set(('active', 'composing', 'gone', 'inactive', 'paused'))
-
- def active(self):
- self.setState('active')
-
- def composing(self):
- self.setState('composing')
-
- def gone(self):
- self.setState('gone')
-
- def inactive(self):
- self.setState('inactive')
-
- def paused(self):
- self.setState('paused')
-
- def setState(self, state):
- if state in self.states:
- self.name = state
- self.xml.tag = '{%s}%s' % (self.namespace, state)
- else:
- raise ValueError('Invalid chat state')
-
- def getState(self):
- return self.name
-
-# In order to match the various chat state elements,
-# we need one stanza object per state, even though
-# they are all the same except for the initial name
-# value. Do not depend on the type of the chat state
-# stanza object for the actual state.
-
-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'
-
-
-class xep_0085(base.base_plugin):
- """
- XEP-0085 Chat State Notifications
- """
-
- def plugin_init(self):
- self.xep = '0085'
- self.description = 'Chat State Notifications'
-
- handlers = [('Active Chat State', 'active'),
- ('Composing Chat State', 'composing'),
- ('Gone Chat State', 'gone'),
- ('Inactive Chat State', 'inactive'),
- ('Paused Chat State', 'paused')]
- for handler in handlers:
- self.xmpp.registerHandler(
- Callback(handler[0],
- MatchXPath("{%s}message/{%s}%s" % (self.xmpp.default_ns,
- ChatState.namespace,
- handler[1])),
- self._handleChatState))
-
- registerStanzaPlugin(Message, Active)
- registerStanzaPlugin(Message, Composing)
- registerStanzaPlugin(Message, Gone)
- registerStanzaPlugin(Message, Inactive)
- registerStanzaPlugin(Message, Paused)
-
- def post_init(self):
- base.base_plugin.post_init(self)
- self.xmpp.plugin['xep_0030'].add_feature('http://jabber.org/protocol/chatstates')
-
- def _handleChatState(self, msg):
- state = msg['chat_state'].name
- log.debug("Chat State: %s, %s" % (state, msg['from'].jid))
- self.xmpp.event('chatstate_%s' % state, msg)