slixmpp/sleekxmpp/xmlstream/stanzabase.py

38 lines
790 B
Python
Raw Normal View History

2009-06-03 22:56:51 +00:00
from __future__ import absolute_import
from sleekxmpp.xmlstream.matcher.xpath import MatchXPath
class StanzaBase(object):
MATCHER = MatchXPath("")
def __init__(self, stream, xml=None, extensions=[]):
self.extensions = extensions
self.p = {} #plugins
self.xml = xml
self.stream = stream
if xml is not None:
self.fromXML(xml)
def fromXML(self, xml):
"Initialize based on incoming XML"
self._processXML(xml)
for ext in self.extensions:
ext.fromXML(self, xml)
def _processXML(self, xml, cur_ns=''):
if '}' in xml.tag:
ns,tag = xml.tag[1:].split('}')
else:
tag = xml.tag
def toXML(self, xml):
"Set outgoing XML"
def extend(self, extension_class, xml=None):
"Initialize extension"
def match(self, xml):
return self.MATCHER.match(xml)