# 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))