summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/stanzabase.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/xmlstream/stanzabase.py')
-rw-r--r--sleekxmpp/xmlstream/stanzabase.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/sleekxmpp/xmlstream/stanzabase.py b/sleekxmpp/xmlstream/stanzabase.py
new file mode 100644
index 00000000..5232ff5e
--- /dev/null
+++ b/sleekxmpp/xmlstream/stanzabase.py
@@ -0,0 +1,37 @@
+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)