diff options
author | Lance Stout <lancestout@gmail.com> | 2011-08-06 00:45:18 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-08-06 12:30:56 -0700 |
commit | 75f23d11301f09a29db4d0cc185dd5ffdc4a18fe (patch) | |
tree | 18d875692584c71539590449e3ab459c94e79882 /sleekxmpp/plugins/xep_0078/stanza.py | |
parent | e83fae3a6fed7dd143aa6fed0673ff46340ea953 (diff) | |
download | slixmpp-75f23d11301f09a29db4d0cc185dd5ffdc4a18fe.tar.gz slixmpp-75f23d11301f09a29db4d0cc185dd5ffdc4a18fe.tar.bz2 slixmpp-75f23d11301f09a29db4d0cc185dd5ffdc4a18fe.tar.xz slixmpp-75f23d11301f09a29db4d0cc185dd5ffdc4a18fe.zip |
Fix XEP-0078 using the new stream feature workflow.
Honestly, this is mainly just a demo/proof of concept that we
can handle dependencies and ordering issues with stream features.
DON'T use XEP-0078 if you are able to use the normal SASL method,
which should be the case unless you are dealing with a very old
XMPP server implementation.
Diffstat (limited to 'sleekxmpp/plugins/xep_0078/stanza.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0078/stanza.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0078/stanza.py b/sleekxmpp/plugins/xep_0078/stanza.py new file mode 100644 index 00000000..86ba09ad --- /dev/null +++ b/sleekxmpp/plugins/xep_0078/stanza.py @@ -0,0 +1,43 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin + + +class IqAuth(ElementBase): + namespace = 'jabber:iq:auth' + name = 'query' + plugin_attrib = 'auth' + interfaces = set(('fields', 'username', 'password', 'resource', 'digest')) + sub_interfaces = set(('username', 'password', 'resource', 'digest')) + plugin_tag_map = {} + plugin_attrib_map = {} + + def get_fields(self): + fields = set() + for field in self.sub_interfaces: + if self.xml.find('{%s}%s' % (self.namespace, field)) is not None: + fields.add(field) + return fields + + def set_resource(self, value): + self._set_sub_text('resource', value, keep=True) + + def set_password(self, value): + self._set_sub_text('password', value, keep=True) + + +class AuthFeature(ElementBase): + namespace = 'http://jabber.org/features/iq-auth' + name = 'auth' + plugin_attrib = 'auth' + interfaces = set() + plugin_tag_map = {} + plugin_attrib_map = {} + + |