Source code for slixmpp.plugins.xep_0198.stanza


# Slixmpp: The Slick XMPP Library
# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
# This file is part of Slixmpp.
# See the file LICENSE for copying permission.
from slixmpp.stanza import Error
from slixmpp.xmlstream import ElementBase, StanzaBase


[docs]class Enable(StanzaBase): name = 'enable' namespace = 'urn:xmpp:sm:3' interfaces = {'max', 'resume'}
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs] def get_resume(self): return self._get_attr('resume', 'false').lower() in ('true', '1')
[docs] def set_resume(self, val): self._del_attr('resume') self._set_attr('resume', 'true' if val else 'false')
[docs]class Enabled(StanzaBase): name = 'enabled' namespace = 'urn:xmpp:sm:3' interfaces = {'id', 'location', 'max', 'resume'}
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs] def get_resume(self): return self._get_attr('resume', 'false').lower() in ('true', '1')
[docs] def set_resume(self, val): self._del_attr('resume') self._set_attr('resume', 'true' if val else 'false')
[docs]class Resume(StanzaBase): name = 'resume' namespace = 'urn:xmpp:sm:3' interfaces = {'h', 'previd'}
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs] def get_h(self): h = self._get_attr('h', None) if h: return int(h) return None
[docs] def set_h(self, val): self._set_attr('h', str(val))
[docs]class Resumed(StanzaBase): name = 'resumed' namespace = 'urn:xmpp:sm:3' interfaces = {'h', 'previd'}
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs] def get_h(self): h = self._get_attr('h', None) if h: return int(h) return None
[docs] def set_h(self, val): self._set_attr('h', str(val))
[docs]class Failed(StanzaBase, Error): name = 'failed' namespace = 'urn:xmpp:sm:3' interfaces = set()
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs]class StreamManagement(ElementBase): name = 'sm' namespace = 'urn:xmpp:sm:3' plugin_attrib = name interfaces = {'required', 'optional'}
[docs] def get_required(self): return self.xml.find('{%s}required' % self.namespace) is not None
[docs] def set_required(self, val): self.del_required() if val: self._set_sub_text('required', '', keep=True)
[docs] def del_required(self): self._del_sub('required')
[docs] def get_optional(self): return self.xml.find('{%s}optional' % self.namespace) is not None
[docs] def set_optional(self, val): self.del_optional() if val: self._set_sub_text('optional', '', keep=True)
[docs] def del_optional(self): self._del_sub('optional')
[docs]class RequestAck(StanzaBase): name = 'r' namespace = 'urn:xmpp:sm:3' interfaces = set()
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs]class Ack(StanzaBase): name = 'a' namespace = 'urn:xmpp:sm:3' interfaces = {'h'}
[docs] def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name()
[docs] def get_h(self): h = self._get_attr('h', None) if h: return int(h) return None
[docs] def set_h(self, val): self._set_attr('h', str(val))