summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/stanzabase.py
blob: 5232ff5e42707f97b33125e1c5bc03ef0c358e60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)