Merge branch 'develop' into stream_features
Conflicts: sleekxmpp/xmlstream/stanzabase.py
This commit is contained in:
@@ -42,8 +42,6 @@ class BaseHandler(object):
|
||||
this handler.
|
||||
stream -- The XMLStream instance the handler should monitor.
|
||||
"""
|
||||
self.checkDelete = self.check_delete
|
||||
|
||||
self.name = name
|
||||
self.stream = stream
|
||||
self._destroy = False
|
||||
@@ -87,3 +85,8 @@ class BaseHandler(object):
|
||||
handlers.
|
||||
"""
|
||||
return self._destroy
|
||||
|
||||
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
BaseHandler.checkDelete = BaseHandler.check_delete
|
||||
|
||||
@@ -61,7 +61,8 @@ class Callback(BaseHandler):
|
||||
Arguments:
|
||||
payload -- The matched stanza object.
|
||||
"""
|
||||
BaseHandler.prerun(self, payload)
|
||||
if self._once:
|
||||
self._destroy = True
|
||||
if self._instream:
|
||||
self.run(payload, True)
|
||||
|
||||
@@ -78,7 +79,7 @@ class Callback(BaseHandler):
|
||||
Defaults to False.
|
||||
"""
|
||||
if not self._instream or instream:
|
||||
BaseHandler.run(self, payload)
|
||||
self._pointer(payload)
|
||||
if self._once:
|
||||
self._destroy = True
|
||||
del self._pointer
|
||||
|
||||
@@ -117,7 +117,8 @@ class MatchXMLMask(MatcherBase):
|
||||
return False
|
||||
|
||||
# If the mask includes text, compare it.
|
||||
if mask.text and source.text and source.text.strip() != mask.text.strip():
|
||||
if mask.text and source.text and \
|
||||
source.text.strip() != mask.text.strip():
|
||||
return False
|
||||
|
||||
# Compare attributes. The stanza must include the attributes
|
||||
|
||||
@@ -140,7 +140,8 @@ class Scheduler(object):
|
||||
"""Process scheduled tasks."""
|
||||
self.run = True
|
||||
try:
|
||||
while self.run and (self.parentstop is None or not self.parentstop.isSet()):
|
||||
while self.run and (self.parentstop is None or \
|
||||
not self.parentstop.isSet()):
|
||||
wait = 1
|
||||
updated = False
|
||||
if self.schedule:
|
||||
|
||||
@@ -218,18 +218,6 @@ class ElementBase(object):
|
||||
xml -- Initialize the stanza with optional existing XML.
|
||||
parent -- Optional stanza object that contains this stanza.
|
||||
"""
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
self.initPlugin = self.init_plugin
|
||||
self._getAttr = self._get_attr
|
||||
self._setAttr = self._set_attr
|
||||
self._delAttr = self._del_attr
|
||||
self._getSubText = self._get_sub_text
|
||||
self._setSubText = self._set_sub_text
|
||||
self._delSub = self._del_sub
|
||||
self.getStanzaValues = self._get_stanza_values
|
||||
self.setStanzaValues = self._set_stanza_values
|
||||
|
||||
self.xml = xml
|
||||
self.plugins = OrderedDict()
|
||||
self.iterables = []
|
||||
@@ -1078,17 +1066,6 @@ class StanzaBase(ElementBase):
|
||||
sfrom -- Optional string or JID object of the sender's JID.
|
||||
sid -- Optional ID value for the stanza.
|
||||
"""
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
self.setType = self.set_type
|
||||
self.getTo = self.get_to
|
||||
self.setTo = self.set_to
|
||||
self.getFrom = self.get_from
|
||||
self.setFrom = self.set_from
|
||||
self.getPayload = self.get_payload
|
||||
self.setPayload = self.set_payload
|
||||
self.delPayload = self.del_payload
|
||||
|
||||
self.stream = stream
|
||||
if stream is not None:
|
||||
self.namespace = stream.default_ns
|
||||
@@ -1163,12 +1140,17 @@ class StanzaBase(ElementBase):
|
||||
self.clear()
|
||||
return self
|
||||
|
||||
def reply(self):
|
||||
def reply(self, clear=True):
|
||||
"""
|
||||
Reset the stanza and swap its 'from' and 'to' attributes to prepare
|
||||
for sending a reply stanza.
|
||||
Swap the 'from' and 'to' attributes to prepare the stanza for
|
||||
sending a reply. If clear=True, then also remove the stanza's
|
||||
contents to make room for the reply content.
|
||||
|
||||
For client streams, the 'from' attribute is removed.
|
||||
|
||||
Arguments:
|
||||
clear -- Indicates if the stanza's contents should be
|
||||
removed. Defaults to True
|
||||
"""
|
||||
# if it's a component, use from
|
||||
if self.stream and hasattr(self.stream, "is_component") and \
|
||||
@@ -1177,7 +1159,8 @@ class StanzaBase(ElementBase):
|
||||
else:
|
||||
self['to'] = self['from']
|
||||
del self['from']
|
||||
self.clear()
|
||||
if clear:
|
||||
self.clear()
|
||||
return self
|
||||
|
||||
def error(self):
|
||||
@@ -1221,3 +1204,25 @@ class StanzaBase(ElementBase):
|
||||
stanza_ns=self.namespace,
|
||||
stream=self.stream,
|
||||
top_level = True)
|
||||
|
||||
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
ElementBase.initPlugin = ElementBase.init_plugin
|
||||
ElementBase._getAttr = ElementBase._get_attr
|
||||
ElementBase._setAttr = ElementBase._set_attr
|
||||
ElementBase._delAttr = ElementBase._del_attr
|
||||
ElementBase._getSubText = ElementBase._get_sub_text
|
||||
ElementBase._setSubText = ElementBase._set_sub_text
|
||||
ElementBase._delSub = ElementBase._del_sub
|
||||
ElementBase.getStanzaValues = ElementBase._get_stanza_values
|
||||
ElementBase.setStanzaValues = ElementBase._set_stanza_values
|
||||
|
||||
StanzaBase.setType = StanzaBase.set_type
|
||||
StanzaBase.getTo = StanzaBase.get_to
|
||||
StanzaBase.setTo = StanzaBase.set_to
|
||||
StanzaBase.getFrom = StanzaBase.get_from
|
||||
StanzaBase.setFrom = StanzaBase.set_from
|
||||
StanzaBase.getPayload = StanzaBase.get_payload
|
||||
StanzaBase.setPayload = StanzaBase.set_payload
|
||||
StanzaBase.delPayload = StanzaBase.del_payload
|
||||
|
||||
@@ -149,19 +149,6 @@ class XMLStream(object):
|
||||
port -- The port to use for the connection.
|
||||
Defaults to 0.
|
||||
"""
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
self.startTLS = self.start_tls
|
||||
self.registerStanza = self.register_stanza
|
||||
self.removeStanza = self.remove_stanza
|
||||
self.registerHandler = self.register_handler
|
||||
self.removeHandler = self.remove_handler
|
||||
self.setSocket = self.set_socket
|
||||
self.sendRaw = self.send_raw
|
||||
self.getId = self.get_id
|
||||
self.getNewId = self.new_id
|
||||
self.sendXML = self.send_xml
|
||||
|
||||
self.ssl_support = SSL_SUPPORT
|
||||
self.ssl_version = ssl.PROTOCOL_TLSv1
|
||||
self.ca_certs = None
|
||||
@@ -826,13 +813,7 @@ class XMLStream(object):
|
||||
|
||||
# Convert the raw XML object into a stanza object. If no registered
|
||||
# stanza type applies, a generic StanzaBase stanza will be used.
|
||||
stanza_type = StanzaBase
|
||||
for stanza_class in self.__root_stanza:
|
||||
if xml.tag == "{%s}%s" % (self.default_ns, stanza_class.name) or \
|
||||
xml.tag == stanza_class.tag_name():
|
||||
stanza_type = stanza_class
|
||||
break
|
||||
stanza = stanza_type(self, xml)
|
||||
stanza = self._build_stanza(xml)
|
||||
|
||||
# Match the stanza against registered handlers. Handlers marked
|
||||
# to run "in stream" will be executed immediately; the rest will
|
||||
@@ -840,12 +821,12 @@ class XMLStream(object):
|
||||
unhandled = True
|
||||
for handler in self.__handlers:
|
||||
if handler.match(stanza):
|
||||
stanza_copy = stanza_type(self, copy.deepcopy(xml))
|
||||
stanza_copy = copy.copy(stanza)
|
||||
handler.prerun(stanza_copy)
|
||||
self.event_queue.put(('stanza', handler, stanza_copy))
|
||||
try:
|
||||
if handler.check_delete():
|
||||
self.__handlers.pop(self.__handlers.index(handler))
|
||||
self.__handlers.remove(handler)
|
||||
except:
|
||||
pass # not thread safe
|
||||
unhandled = False
|
||||
@@ -970,9 +951,11 @@ class XMLStream(object):
|
||||
is not caught.
|
||||
"""
|
||||
init_old = threading.Thread.__init__
|
||||
|
||||
def init(self, *args, **kwargs):
|
||||
init_old(self, *args, **kwargs)
|
||||
run_old = self.run
|
||||
|
||||
def run_with_except_hook(*args, **kw):
|
||||
try:
|
||||
run_old(*args, **kw)
|
||||
@@ -982,3 +965,17 @@ class XMLStream(object):
|
||||
sys.excepthook(*sys.exc_info())
|
||||
self.run = run_with_except_hook
|
||||
threading.Thread.__init__ = init
|
||||
|
||||
|
||||
# To comply with PEP8, method names now use underscores.
|
||||
# Deprecated method names are re-mapped for backwards compatibility.
|
||||
XMLStream.startTLS = XMLStream.start_tls
|
||||
XMLStream.registerStanza = XMLStream.register_stanza
|
||||
XMLStream.removeStanza = XMLStream.remove_stanza
|
||||
XMLStream.registerHandler = XMLStream.register_handler
|
||||
XMLStream.removeHandler = XMLStream.remove_handler
|
||||
XMLStream.setSocket = XMLStream.set_socket
|
||||
XMLStream.sendRaw = XMLStream.send_raw
|
||||
XMLStream.getId = XMLStream.get_id
|
||||
XMLStream.getNewId = XMLStream.new_id
|
||||
XMLStream.sendXML = XMLStream.send_xml
|
||||
|
||||
Reference in New Issue
Block a user