diff options
author | Lance Stout <lancestout@gmail.com> | 2012-01-19 02:37:36 -0800 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-01-19 02:37:36 -0800 |
commit | 02f400615334806fc531c149d85fe6f9a06d3e1e (patch) | |
tree | 28c96f1355e4576afd6e9a6c89bb6625144f695d /sleekxmpp/plugins/xep_0077/stanza.py | |
parent | b25668b5b7264bafeeeaeeb0efd6e911036d2d30 (diff) | |
download | slixmpp-02f400615334806fc531c149d85fe6f9a06d3e1e.tar.gz slixmpp-02f400615334806fc531c149d85fe6f9a06d3e1e.tar.bz2 slixmpp-02f400615334806fc531c149d85fe6f9a06d3e1e.tar.xz slixmpp-02f400615334806fc531c149d85fe6f9a06d3e1e.zip |
Add basic start for a client side XEP-0077 plugin.
Diffstat (limited to 'sleekxmpp/plugins/xep_0077/stanza.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0077/stanza.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0077/stanza.py b/sleekxmpp/plugins/xep_0077/stanza.py new file mode 100644 index 00000000..e06c1910 --- /dev/null +++ b/sleekxmpp/plugins/xep_0077/stanza.py @@ -0,0 +1,73 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from __future__ import unicode_literals + +from sleekxmpp.xmlstream import ElementBase, ET + + +class Register(ElementBase): + + namespace = 'jabber:iq:register' + name = 'query' + plugin_attrib = 'register' + interfaces = set(('username', 'password', 'email', 'nick', 'name', + 'first', 'last', 'address', 'city', 'state', 'zip', + 'phone', 'url', 'date', 'misc', 'text', 'key', + 'registered', 'remove', 'instructions', 'fields')) + sub_interfaces = interfaces + form_fields = set(('username', 'password', 'email', 'nick', 'name', + 'first', 'last', 'address', 'city', 'state', 'zip', + 'phone', 'url', 'date', 'misc', 'text', 'key')) + + def get_registered(self): + present = self.xml.find('{%s}registered' % self.namespace) + return present is not None + + def get_remove(self): + present = self.xml.find('{%s}remove' % self.namespace) + return present is not None + + def set_registered(self, value): + if value: + self.add_field('registered') + else: + del self['registered'] + + def set_remove(self, value): + if value: + self.add_field('remove') + else: + del self['remove'] + + def add_field(self, value): + self._set_sub_text(value, '', keep=True) + + def get_fields(self): + fields = set() + for field in self.form_fields: + if self.xml.find('{%s}%s' % (self.namespace, field)) is not None: + fields.add(field) + return fields + + def set_fields(self, fields): + del self['fields'] + for field in fields: + self._set_sub_text(field, '', keep=True) + + def del_fields(self): + for field in self.form_fields: + self._del_sub(field) + + +class RegisterFeature(ElementBase): + + name = 'register' + namespace = 'http://jabber.org/features/iq-register' + plugin_attrib = name + interfaces = set() |