Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop

This commit is contained in:
Lance Stout 2011-08-04 19:07:04 -07:00
commit 6eac0606cf
8 changed files with 43 additions and 179 deletions

View file

@ -74,11 +74,6 @@ packages = [ 'sleekxmpp',
'sleekxmpp/thirdparty/suelta/mechanisms', 'sleekxmpp/thirdparty/suelta/mechanisms',
] ]
if sys.version_info < (3, 0):
py_modules = ['sleekxmpp.xmlstream.tostring.tostring26']
else:
py_modules = ['sleekxmpp.xmlstream.tostring.tostring']
setup( setup(
name = "sleekxmpp", name = "sleekxmpp",
version = VERSION, version = VERSION,
@ -90,7 +85,6 @@ setup(
license = 'MIT', license = 'MIT',
platforms = [ 'any' ], platforms = [ 'any' ],
packages = packages, packages = packages,
py_modules = py_modules,
requires = [ 'tlslite', 'pythondns' ], requires = [ 'tlslite', 'pythondns' ],
) )

View file

@ -1,2 +1,2 @@
from pubsub import xep_0060 from sleekxmpp.plugins.xep_0060.pubsub import xep_0060
import stanza from sleekxmpp.plugins.xep_0060 import stanza

View file

@ -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 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 pubsub_owner import PubsubOwner, DefaultConfig, OwnerAffiliations, OwnerAffiliation, OwnerConfigure, OwnerDefault, OwnerDelete, OwnerPurge, OwnerRedirect, OwnerSubscriptions, OwnerSubscription from sleekxmpp.plugins.xep_0060.stanza.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_event import Event, EventItem, EventRetract, EventItems, EventCollection, EventAssociate, EventDisassociate, EventConfiguration, EventPurge, EventSubscription

View file

@ -5,7 +5,7 @@ from sleekxmpp.basexmpp import basexmpp
from sleekxmpp.xmlstream.xmlstream import XMLStream from sleekxmpp.xmlstream.xmlstream import XMLStream
import logging import logging
from sleekxmpp.plugins import xep_0004 from sleekxmpp.plugins import xep_0004
from base import OptionalSetting from sleekxmpp.plugins.xep_0060.stanza.base import OptionalSetting
class Pubsub(ElementBase): class Pubsub(ElementBase):

View file

@ -5,8 +5,8 @@ from sleekxmpp.basexmpp import basexmpp
from sleekxmpp.xmlstream.xmlstream import XMLStream from sleekxmpp.xmlstream.xmlstream import XMLStream
import logging import logging
from sleekxmpp.plugins import xep_0004 from sleekxmpp.plugins import xep_0004
from base import OptionalSetting from sleekxmpp.plugins.xep_0060.stanza.base import OptionalSetting
from pubsub import Affiliations, Affiliation, Configure, Subscriptions from sleekxmpp.plugins.xep_0060.stanza.pubsub import Affiliations, Affiliation, Configure, Subscriptions
class PubsubOwner(ElementBase): class PubsubOwner(ElementBase):
namespace = 'http://jabber.org/protocol/pubsub#owner' namespace = 'http://jabber.org/protocol/pubsub#owner'

View file

@ -6,6 +6,11 @@
See the file LICENSE for copying permission. 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, def tostring(xml=None, xmlns='', stanza_ns='', stream=None,
outbuffer='', top_level=False): outbuffer='', top_level=False):
@ -103,6 +108,10 @@ def xml_escape(text):
Arguments: Arguments:
text -- The XML text to convert. 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) text = list(text)
escapes = {'&': '&amp;', escapes = {'&': '&amp;',
'<': '&lt;', '<': '&lt;',

View file

@ -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']

View file

@ -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)