summaryrefslogtreecommitdiff
path: root/sleekxmpp/features/feature_bind.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2011-06-30 15:40:22 -0700
committerLance Stout <lancestout@gmail.com>2011-06-30 15:40:22 -0700
commit754ac5092a3a37819a71f6565a1e54b3f2547940 (patch)
tree8eac47a45f53e7f5bca0ffe312409dbb71924e42 /sleekxmpp/features/feature_bind.py
parent9ed972ffeba8f5071d5cae8497322764207fec04 (diff)
downloadslixmpp-754ac5092a3a37819a71f6565a1e54b3f2547940.tar.gz
slixmpp-754ac5092a3a37819a71f6565a1e54b3f2547940.tar.bz2
slixmpp-754ac5092a3a37819a71f6565a1e54b3f2547940.tar.xz
slixmpp-754ac5092a3a37819a71f6565a1e54b3f2547940.zip
Reorganize features into plugins.
Diffstat (limited to 'sleekxmpp/features/feature_bind.py')
-rw-r--r--sleekxmpp/features/feature_bind.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/sleekxmpp/features/feature_bind.py b/sleekxmpp/features/feature_bind.py
new file mode 100644
index 00000000..caa3844b
--- /dev/null
+++ b/sleekxmpp/features/feature_bind.py
@@ -0,0 +1,55 @@
+"""
+ SleekXMPP: The Sleek XMPP Library
+ Copyright (C) 2010 Nathanael C. Fritz
+ This file is part of SleekXMPP.
+
+ See the file LICENSE for copying permission.
+"""
+
+import logging
+
+from sleekxmpp.xmlstream.matcher import *
+from sleekxmpp.xmlstream.handler import *
+from sleekxmpp.plugins.base import base_plugin
+
+
+log = logging.getLogger(__name__)
+
+
+class feature_bind(base_plugin):
+
+ def plugin_init(self):
+ self.name = 'Bind Resource'
+ self.rfc = '6120'
+ self.description = 'Resource Binding Stream Feature'
+
+ self.xmpp.register_feature('bind',
+ self._handle_bind_resource,
+ restart=False,
+ order=10000)
+
+ def _handle_bind_resource(self, features):
+ """
+ Handle requesting a specific resource.
+
+ Arguments:
+ features -- The stream features stanza.
+ """
+ log.debug("Requesting resource: %s" % self.xmpp.boundjid.resource)
+ iq = self.xmpp.Iq()
+ iq['type'] = 'set'
+ iq.enable('bind')
+ if self.xmpp.boundjid.resource:
+ iq['bind']['resource'] = self.xmpp.boundjid.resource
+ response = iq.send(now=True)
+
+ self.xmpp.set_jid(response['bind']['jid'])
+ self.xmpp.bound = True
+
+ log.info("Node set to: %s" % self.xmpp.boundjid.full)
+
+ if 'session' not in features['features']:
+ log.debug("Established Session")
+ self.xmpp.sessionstarted = True
+ self.xmpp.session_started_event.set()
+ self.xmpp.event("session_start")