Add support for error conditions that include data.

This commit is contained in:
Lance Stout 2012-06-16 14:12:13 -07:00
parent ff6fc44215
commit 8da387a38a
2 changed files with 40 additions and 2 deletions

View file

@ -51,7 +51,8 @@ class Error(ElementBase):
namespace = 'jabber:client'
name = 'error'
plugin_attrib = 'error'
interfaces = set(('code', 'condition', 'text', 'type'))
interfaces = set(('code', 'condition', 'text', 'type',
'gone', 'redirect'))
sub_interfaces = set(('text',))
plugin_attrib_map = {}
plugin_tag_map = {}
@ -135,6 +136,29 @@ class Error(ElementBase):
self._del_sub('{%s}text' % self.condition_ns)
return self
def get_gone(self):
return self._get_sub_text('{%s}gone' % self.condition_ns, '')
def get_redirect(self):
return self._get_sub_text('{%s}redirect' % self.condition_ns, '')
def set_gone(self, value):
del self['condition']
if value:
return self._set_sub_text('{%s}gone' % self.condition_ns, value)
def set_redirect(self, value):
del self['condition']
if value:
ns = self.condition_ns
return self._set_sub_text('{%s}redirect' % ns, value)
def del_gone(self):
self._del_sub('{%s}gone' % self.condition_ns)
def del_redirect(self):
self._del_sub('{%s}redirect' % self.condition_ns)
# To comply with PEP8, method names now use underscores.
# Deprecated method names are re-mapped for backwards compatibility.

View file

@ -54,7 +54,7 @@ class StreamError(Error, StanzaBase):
"""
namespace = 'http://etherx.jabber.org/streams'
interfaces = set(('condition', 'text'))
interfaces = set(('condition', 'text', 'see_other_host'))
conditions = set((
'bad-format', 'bad-namespace-prefix', 'conflict',
'connection-timeout', 'host-gone', 'host-unknown',
@ -66,3 +66,17 @@ class StreamError(Error, StanzaBase):
'unsupported-feature', 'unsupported-stanza-type',
'unsupported-version'))
condition_ns = 'urn:ietf:params:xml:ns:xmpp-streams'
def get_see_other_host(self):
ns = self.condition_ns
return self._get_sub_text('{%s}see-other-host' % ns, '')
def set_see_other_host(self, value):
del self['condition']
if value:
ns = self.condition_ns
return self._set_sub_text('{%s}see-other-host' % ns, value)
def del_see_other_host(self):
self._del_sub('{%s}see-other-host' % self.condition_ns)