diff options
author | Nathan Fritz <fritzy@netflint.net> | 2009-12-15 04:37:10 +0000 |
---|---|---|
committer | Nathan Fritz <fritzy@netflint.net> | 2009-12-15 04:37:10 +0000 |
commit | 6897a0b57c299cff9e32fde4dcb4209e70fb4bcb (patch) | |
tree | cbe75272586755074840dd37d5b848a0c38de0b6 /sleekxmpp/stanza/error.py | |
parent | ca044a4934bc6373988a1b442da3673b70357317 (diff) | |
download | slixmpp-6897a0b57c299cff9e32fde4dcb4209e70fb4bcb.tar.gz slixmpp-6897a0b57c299cff9e32fde4dcb4209e70fb4bcb.tar.bz2 slixmpp-6897a0b57c299cff9e32fde4dcb4209e70fb4bcb.tar.xz slixmpp-6897a0b57c299cff9e32fde4dcb4209e70fb4bcb.zip |
* added error, htmlim, roster, and nick stanza plugins
Diffstat (limited to 'sleekxmpp/stanza/error.py')
-rw-r--r-- | sleekxmpp/stanza/error.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/sleekxmpp/stanza/error.py b/sleekxmpp/stanza/error.py new file mode 100644 index 00000000..4cb7310a --- /dev/null +++ b/sleekxmpp/stanza/error.py @@ -0,0 +1,55 @@ +from .. xmlstream.stanzabase import ElementBase, ET + +class Error(ElementBase): + namespace = 'jabber:client' + name = 'error' + plugin_attrib = 'error' + conditions = set(('bad-request', 'conflict', 'feature-not-implemented', 'forbidden', 'gone', 'item-not-found', 'jid-malformed', 'not-acceptable', 'not-allowed', 'not-authorized', 'payment-required', 'recipient-unavailable', 'redirect', 'registration-required', 'remote-server-not-found', 'remote-server-timeout', 'service-unavailable', 'subscription-required', 'undefined-condition', 'unexpected-request')) + interfaces = set(('condition', 'text', 'type')) + types = set(('cancel', 'continue', 'modify', 'auth', 'wait')) + sub_interfaces = set(('text',)) + condition_ns = 'urn:ietf:params:xml:ns:xmpp-stanzas' + + def setup(self, xml=None): + if ElementBase.setup(self, xml): #if we had to generate xml + self['type'] = 'cancel' + self['condition'] = 'feature-not-implemented' + if self.parent is not None: + self.parent['type'] = 'error' + + def getCondition(self): + for child in self.xml.getchildren(): + if "{%s}" % self.condition_ns in child.tag: + return child.tag.split('}', 1)[-1] + return '' + + def setCondition(self, value): + if value in self.conditions: + for child in self.xml.getchildren(): + if "{%s}" % self.condition_ns in child.tag: + self.xml.remove(child) + condition = ET.Element("{%s}%s" % (self.condition_ns, value)) + self.xml.append(condition) + return self + + def delCondition(self): + return self + + def getText(self): + text = '' + textxml = self.xml.find("{urn:ietf:params:xml:ns:xmpp-stanzas}text") + if textxml is not None: + text = textxml.text + return text + + def setText(self, value): + self.delText() + textxml = ET.Element('{urn:ietf:params:xml:ns:xmpp-stanzas}text') + textxml.text = value + self.xml.append(textxml) + return self + + def delText(self): + textxml = self.xml.find("{urn:ietf:params:xml:ns:xmpp-stanzas}text") + if textxml is not None: + self.xml.remove(textxml) |