summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup.py6
-rw-r--r--sleekxmpp/plugins/xep_0060/__init__.py4
-rw-r--r--sleekxmpp/plugins/xep_0060/stanza/__init__.py6
-rw-r--r--sleekxmpp/plugins/xep_0060/stanza/pubsub.py34
-rw-r--r--sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py24
-rw-r--r--sleekxmpp/xmlstream/tostring.py (renamed from sleekxmpp/xmlstream/tostring/tostring.py)9
-rw-r--r--sleekxmpp/xmlstream/tostring/__init__.py19
-rw-r--r--sleekxmpp/xmlstream/tostring/tostring26.py120
8 files changed, 43 insertions, 179 deletions
diff --git a/setup.py b/setup.py
index 48d88690..be9a0d32 100644
--- a/setup.py
+++ b/setup.py
@@ -74,11 +74,6 @@ packages = [ 'sleekxmpp',
'sleekxmpp/thirdparty/suelta/mechanisms',
]
-if sys.version_info < (3, 0):
- py_modules = ['sleekxmpp.xmlstream.tostring.tostring26']
-else:
- py_modules = ['sleekxmpp.xmlstream.tostring.tostring']
-
setup(
name = "sleekxmpp",
version = VERSION,
@@ -90,7 +85,6 @@ setup(
license = 'MIT',
platforms = [ 'any' ],
packages = packages,
- py_modules = py_modules,
requires = [ 'tlslite', 'pythondns' ],
)
diff --git a/sleekxmpp/plugins/xep_0060/__init__.py b/sleekxmpp/plugins/xep_0060/__init__.py
index a0c91f85..026f7c2b 100644
--- a/sleekxmpp/plugins/xep_0060/__init__.py
+++ b/sleekxmpp/plugins/xep_0060/__init__.py
@@ -1,2 +1,2 @@
-from pubsub import xep_0060
-import stanza
+from sleekxmpp.plugins.xep_0060.pubsub import xep_0060
+from sleekxmpp.plugins.xep_0060 import stanza
diff --git a/sleekxmpp/plugins/xep_0060/stanza/__init__.py b/sleekxmpp/plugins/xep_0060/stanza/__init__.py
index 52a21efe..d7cd91a8 100644
--- a/sleekxmpp/plugins/xep_0060/stanza/__init__.py
+++ b/sleekxmpp/plugins/xep_0060/stanza/__init__.py
@@ -1,3 +1,3 @@
-from pubsub import Pubsub, Affiliation, Affiliations, Subscription, Subscriptions, SubscribeOptions, Item, Items, Create, Publish, Retract, Unsubscribe, Subscribe, Configure, Options, PubsubState, PubsubStateEvent
-from pubsub_owner import PubsubOwner, DefaultConfig, OwnerAffiliations, OwnerAffiliation, OwnerConfigure, OwnerDefault, OwnerDelete, OwnerPurge, OwnerRedirect, OwnerSubscriptions, OwnerSubscription
-from pubsub_event import Event, EventItem, EventRetract, EventItems, EventCollection, EventAssociate, EventDisassociate, EventConfiguration, EventPurge, EventSubscription
+from sleekxmpp.plugins.xep_0060.stanza.pubsub import Pubsub, Affiliation, Affiliations, Subscription, Subscriptions, SubscribeOptions, Item, Items, Create, Publish, Retract, Unsubscribe, Subscribe, Configure, Options, PubsubState, PubsubStateEvent
+from sleekxmpp.plugins.xep_0060.stanza.pubsub_owner import PubsubOwner, DefaultConfig, OwnerAffiliations, OwnerAffiliation, OwnerConfigure, OwnerDefault, OwnerDelete, OwnerPurge, OwnerRedirect, OwnerSubscriptions, OwnerSubscription
+from sleekxmpp.plugins.xep_0060.stanza.pubsub_event import Event, EventItem, EventRetract, EventItems, EventCollection, EventAssociate, EventDisassociate, EventConfiguration, EventPurge, EventSubscription
diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
index 4d586cae..96655942 100644
--- a/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
+++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub.py
@@ -5,7 +5,7 @@ from sleekxmpp.basexmpp import basexmpp
from sleekxmpp.xmlstream.xmlstream import XMLStream
import logging
from sleekxmpp.plugins import xep_0004
-from base import OptionalSetting
+from sleekxmpp.plugins.xep_0060.stanza.base import OptionalSetting
class Pubsub(ElementBase):
@@ -55,7 +55,7 @@ class Subscription(ElementBase):
def setjid(self, value):
self._setattr('jid', str(value))
-
+
def getjid(self):
return jid(self._getattr('jid'))
@@ -93,12 +93,12 @@ class Item(ElementBase):
def setPayload(self, value):
self.xml.append(value)
-
+
def getPayload(self):
childs = self.xml.getchildren()
if len(childs) > 0:
return childs[0]
-
+
def delPayload(self):
for child in self.xml.getchildren():
self.xml.remove(child)
@@ -167,10 +167,10 @@ class Unsubscribe(ElementBase):
interfaces = set(('node', 'jid'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def setJid(self, value):
self._setAttr('jid', str(value))
-
+
def getJid(self):
return JID(self._getAttr('jid'))
@@ -186,7 +186,7 @@ class Subscribe(ElementBase):
def setJid(self, value):
self._setAttr('jid', str(value))
-
+
def getJid(self):
return JID(self._getAttr('jid'))
@@ -204,7 +204,7 @@ class Configure(ElementBase):
t = self._getAttr('type')
if not t: t == 'leaf'
return t
-
+
registerStanzaPlugin(Pubsub, Configure)
registerStanzaPlugin(Configure, xep_0004.Form)
@@ -215,28 +215,28 @@ class Options(ElementBase):
interfaces = set(('jid', 'node', 'options'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def __init__(self, *args, **kwargs):
ElementBase.__init__(self, *args, **kwargs)
-
+
def getOptions(self):
config = self.xml.find('{jabber:x:data}x')
form = xep_0004.Form()
if config is not None:
form.fromXML(config)
return form
-
+
def setOptions(self, value):
self.xml.append(value.getXML())
return self
-
+
def delOptions(self):
config = self.xml.find('{jabber:x:data}x')
self.xml.remove(config)
-
+
def setJid(self, value):
self._setAttr('jid', str(value))
-
+
def getJid(self):
return JID(self._getAttr('jid'))
@@ -250,15 +250,15 @@ class PubsubState(ElementBase):
interfaces = set(('node', 'item', 'payload'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def setPayload(self, value):
self.xml.append(value)
-
+
def getPayload(self):
childs = self.xml.getchildren()
if len(childs) > 0:
return childs[0]
-
+
def delPayload(self):
for child in self.xml.getchildren():
self.xml.remove(child)
diff --git a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
index 05889611..a90780cc 100644
--- a/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
+++ b/sleekxmpp/plugins/xep_0060/stanza/pubsub_owner.py
@@ -5,8 +5,8 @@ from sleekxmpp.basexmpp import basexmpp
from sleekxmpp.xmlstream.xmlstream import XMLStream
import logging
from sleekxmpp.plugins import xep_0004
-from base import OptionalSetting
-from pubsub import Affiliations, Affiliation, Configure, Subscriptions
+from sleekxmpp.plugins.xep_0060.stanza.base import OptionalSetting
+from sleekxmpp.plugins.xep_0060.stanza.pubsub import Affiliations, Affiliation, Configure, Subscriptions
class PubsubOwner(ElementBase):
namespace = 'http://jabber.org/protocol/pubsub#owner'
@@ -25,7 +25,7 @@ class DefaultConfig(ElementBase):
interfaces = set(('node', 'type', 'config'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def __init__(self, *args, **kwargs):
ElementBase.__init__(self, *args, **kwargs)
@@ -33,10 +33,10 @@ class DefaultConfig(ElementBase):
t = self._getAttr('type')
if not t: t = 'leaf'
return t
-
+
def getConfig(self):
return self['form']
-
+
def setConfig(self, value):
self['form'].setStanzaValues(value.getStanzaValues())
return self
@@ -49,7 +49,7 @@ class OwnerAffiliations(Affiliations):
interfaces = set(('node'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def append(self, affiliation):
if not isinstance(affiliation, OwnerAffiliation):
raise TypeError
@@ -77,10 +77,10 @@ class OwnerDefault(OwnerConfigure):
interfaces = set(('node', 'config'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def getConfig(self):
return self['form']
-
+
def setConfig(self, value):
self['form'].setStanzaValues(value.getStanzaValues())
return self
@@ -114,10 +114,10 @@ class OwnerRedirect(ElementBase):
interfaces = set(('node', 'jid'))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def setJid(self, value):
self._setAttr('jid', str(value))
-
+
def getJid(self):
return JID(self._getAttr('jid'))
@@ -128,7 +128,7 @@ class OwnerSubscriptions(Subscriptions):
interfaces = set(('node',))
plugin_attrib_map = {}
plugin_tag_map = {}
-
+
def append(self, subscription):
if not isinstance(subscription, OwnerSubscription):
raise TypeError
@@ -147,6 +147,6 @@ class OwnerSubscription(ElementBase):
def setJid(self, value):
self._setAttr('jid', str(value))
-
+
def getJid(self):
return JID(self._getAttr('from'))
diff --git a/sleekxmpp/xmlstream/tostring/tostring.py b/sleekxmpp/xmlstream/tostring.py
index a6bb6ebc..f9674b15 100644
--- a/sleekxmpp/xmlstream/tostring/tostring.py
+++ b/sleekxmpp/xmlstream/tostring.py
@@ -6,6 +6,11 @@
See the file LICENSE for copying permission.
"""
+import sys
+
+if sys.version_info < (3, 0):
+ import types
+
def tostring(xml=None, xmlns='', stanza_ns='', stream=None,
outbuffer='', top_level=False):
@@ -103,6 +108,10 @@ def xml_escape(text):
Arguments:
text -- The XML text to convert.
"""
+ if sys.version_info < (3, 0):
+ if type(text) != types.UnicodeType:
+ text = unicode(text, 'utf-8', 'ignore')
+
text = list(text)
escapes = {'&': '&amp;',
'<': '&lt;',
diff --git a/sleekxmpp/xmlstream/tostring/__init__.py b/sleekxmpp/xmlstream/tostring/__init__.py
deleted file mode 100644
index 5852cba2..00000000
--- a/sleekxmpp/xmlstream/tostring/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-"""
- SleekXMPP: The Sleek XMPP Library
- Copyright (C) 2010 Nathanael C. Fritz
- This file is part of SleekXMPP.
-
- See the file LICENSE for copying permission.
-"""
-
-import sys
-
-# Import the correct tostring and xml_escape functions based on the Python
-# version in order to properly handle Unicode.
-
-if sys.version_info < (3, 0):
- from sleekxmpp.xmlstream.tostring.tostring26 import tostring, xml_escape
-else:
- from sleekxmpp.xmlstream.tostring.tostring import tostring, xml_escape
-
-__all__ = ['tostring', 'xml_escape']
diff --git a/sleekxmpp/xmlstream/tostring/tostring26.py b/sleekxmpp/xmlstream/tostring/tostring26.py
deleted file mode 100644
index 3d1ca3d7..00000000
--- a/sleekxmpp/xmlstream/tostring/tostring26.py
+++ /dev/null
@@ -1,120 +0,0 @@
-"""
- SleekXMPP: The Sleek XMPP Library
- Copyright (C) 2010 Nathanael C. Fritz
- This file is part of SleekXMPP.
-
- See the file LICENSE for copying permission.
-"""
-
-from __future__ import unicode_literals
-import types
-
-
-def tostring(xml=None, xmlns='', stanza_ns='', stream=None,
- outbuffer='', top_level=False):
- """
- Serialize an XML object to a Unicode string.
-
- If namespaces are provided using xmlns or stanza_ns, then elements
- that use those namespaces will not include the xmlns attribute in
- the output.
-
- Arguments:
- xml -- The XML object to serialize. If the value is None,
- then the XML object contained in this stanza
- object will be used.
- xmlns -- Optional namespace of an element wrapping the XML
- object.
- stanza_ns -- The namespace of the stanza object that contains
- the XML object.
- stream -- The XML stream that generated the XML object.
- outbuffer -- Optional buffer for storing serializations during
- recursive calls.
- top_level -- Indicates that the element is the outermost
- element.
- """
- # Add previous results to the start of the output.
- output = [outbuffer]
-
- # Extract the element's tag name.
- tag_name = xml.tag.split('}', 1)[-1]
-
- # Extract the element's namespace if it is defined.
- if '}' in xml.tag:
- tag_xmlns = xml.tag.split('}', 1)[0][1:]
- else:
- tag_xmlns = u''
-
- default_ns = ''
- stream_ns = ''
- if stream:
- default_ns = stream.default_ns
- stream_ns = stream.stream_ns
-
- # Output the tag name and derived namespace of the element.
- namespace = u''
- if top_level and tag_xmlns not in ['', default_ns, stream_ns] or \
- tag_xmlns not in ['', xmlns, stanza_ns, stream_ns]:
- namespace = u' xmlns="%s"' % tag_xmlns
- if stream and tag_xmlns in stream.namespace_map:
- mapped_namespace = stream.namespace_map[tag_xmlns]
- if mapped_namespace:
- tag_name = u"%s:%s" % (mapped_namespace, tag_name)
- output.append(u"<%s" % tag_name)
- output.append(namespace)
-
- # Output escaped attribute values.
- for attrib, value in xml.attrib.items():
- value = xml_escape(value)
- if '}' not in attrib:
- output.append(' %s="%s"' % (attrib, value))
- else:
- attrib_ns = attrib.split('}')[0][1:]
- attrib = attrib.split('}')[1]
- if stream and attrib_ns in stream.namespace_map:
- mapped_ns = stream.namespace_map[attrib_ns]
- if mapped_ns:
- output.append(' %s:%s="%s"' % (mapped_ns,
- attrib,
- value))
-
- if len(xml) or xml.text:
- # If there are additional child elements to serialize.
- output.append(u">")
- if xml.text:
- output.append(xml_escape(xml.text))
- if len(xml):
- for child in xml.getchildren():
- output.append(tostring(child, tag_xmlns, stanza_ns, stream))
- output.append(u"</%s>" % tag_name)
- elif xml.text:
- # If we only have text content.
- output.append(u">%s</%s>" % (xml_escape(xml.text), tag_name))
- else:
- # Empty element.
- output.append(u" />")
- if xml.tail:
- # If there is additional text after the element.
- output.append(xml_escape(xml.tail))
- return u''.join(output)
-
-
-def xml_escape(text):
- """
- Convert special characters in XML to escape sequences.
-
- Arguments:
- text -- The XML text to convert.
- """
- if type(text) != types.UnicodeType:
- text = list(unicode(text, 'utf-8', 'ignore'))
- else:
- text = list(text)
- escapes = {u'&': u'&amp;',
- u'<': u'&lt;',
- u'>': u'&gt;',
- u"'": u'&apos;',
- u'"': u'&quot;'}
- for i, c in enumerate(text):
- text[i] = escapes.get(c, c)
- return u''.join(text)