Merge branch 'master' into develop

This commit is contained in:
Lance Stout 2012-06-20 23:46:13 -07:00
commit eb5df1aa37
12 changed files with 182 additions and 7 deletions

View file

@ -45,7 +45,7 @@ The latest source code for SleekXMPP may be found on `Github
``develop`` branch. ``develop`` branch.
**Latest Release** **Latest Release**
- `1.1.6 <http://github.com/fritzy/SleekXMPP/zipball/1.1.6>`_ - `1.1.7 <http://github.com/fritzy/SleekXMPP/zipball/1.1.7>`_
**Develop Releases** **Develop Releases**
- `Latest Develop Version <http://github.com/fritzy/SleekXMPP/zipball/develop>`_ - `Latest Develop Version <http://github.com/fritzy/SleekXMPP/zipball/develop>`_

View file

@ -85,10 +85,12 @@ packages = [ 'sleekxmpp',
'sleekxmpp/plugins/xep_0153', 'sleekxmpp/plugins/xep_0153',
'sleekxmpp/plugins/xep_0172', 'sleekxmpp/plugins/xep_0172',
'sleekxmpp/plugins/xep_0184', 'sleekxmpp/plugins/xep_0184',
'sleekxmpp/plugins/xep_0186',
'sleekxmpp/plugins/xep_0198', 'sleekxmpp/plugins/xep_0198',
'sleekxmpp/plugins/xep_0199', 'sleekxmpp/plugins/xep_0199',
'sleekxmpp/plugins/xep_0202', 'sleekxmpp/plugins/xep_0202',
'sleekxmpp/plugins/xep_0203', 'sleekxmpp/plugins/xep_0203',
'sleekxmpp/plugins/xep_0221',
'sleekxmpp/plugins/xep_0224', 'sleekxmpp/plugins/xep_0224',
'sleekxmpp/plugins/xep_0231', 'sleekxmpp/plugins/xep_0231',
'sleekxmpp/plugins/xep_0249', 'sleekxmpp/plugins/xep_0249',

View file

@ -46,10 +46,12 @@ __all__ = [
'xep_0163', # Personal Eventing Protocol 'xep_0163', # Personal Eventing Protocol
'xep_0172', # User Nickname 'xep_0172', # User Nickname
'xep_0184', # Message Receipts 'xep_0184', # Message Receipts
'xep_0186', # Invisible Command
'xep_0198', # Stream Management 'xep_0198', # Stream Management
'xep_0199', # Ping 'xep_0199', # Ping
'xep_0202', # Entity Time 'xep_0202', # Entity Time
'xep_0203', # Delayed Delivery 'xep_0203', # Delayed Delivery
'xep_0221', # Data Forms Media Element
'xep_0222', # Persistent Storage of Public Data via Pubsub 'xep_0222', # Persistent Storage of Public Data via Pubsub
'xep_0223', # Persistent Storage of Private Data via Pubsub 'xep_0223', # Persistent Storage of Private Data via Pubsub
'xep_0224', # Attention 'xep_0224', # Attention

View file

@ -0,0 +1,16 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.plugins.base import register_plugin
from sleekxmpp.plugins.xep_0186 import stanza
from sleekxmpp.plugins.xep_0186.stanza import Invisible, Visible
from sleekxmpp.plugins.xep_0186.invisible_command import XEP_0186
register_plugin(XEP_0186)

View file

@ -0,0 +1,44 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
import logging
from sleekxmpp import Iq
from sleekxmpp.plugins import BasePlugin
from sleekxmpp.xmlstream import register_stanza_plugin
from sleekxmpp.plugins.xep_0186 import stanza, Visible, Invisible
log = logging.getLogger(__name__)
class XEP_0186(BasePlugin):
name = 'xep_0186'
description = 'XEP-0186: Invisible Command'
dependencies = set(['xep_0030'])
def plugin_init(self):
register_stanza_plugin(Iq, Visible)
register_stanza_plugin(Iq, Invisible)
def set_invisible(self, ifrom=None, block=True, callback=None,
timeout=None):
iq = self.xmpp.Iq()
iq['type'] = 'set'
iq['from'] = ifrom
iq.enable('invisible')
iq.send(block=block, callback=callback, timeout=timeout)
def set_visible(self, ifrom=None, block=True, callback=None,
timeout=None):
iq = self.xmpp.Iq()
iq['type'] = 'set'
iq['from'] = ifrom
iq.enable('visible')
iq.send(block=block, callback=callback, timeout=timeout)

View file

@ -0,0 +1,23 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.xmlstream import ElementBase, ET
class Invisible(ElementBase):
name = 'invisible'
namespace = 'urn:xmpp:invisible:0'
plugin_attrib = 'invisible'
interfaces = set()
class Visible(ElementBase):
name = 'visible'
namespace = 'urn:xmpp:visible:0'
plugin_attrib = 'visible'
interfaces = set()

View file

@ -0,0 +1,16 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.plugins.base import register_plugin
from sleekxmpp.plugins.xep_0221 import stanza
from sleekxmpp.plugins.xep_0221.stanza import Media, URI
from sleekxmpp.plugins.xep_0221.media import XEP_0221
register_plugin(XEP_0221)

View file

@ -0,0 +1,27 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
import logging
from sleekxmpp.plugins import BasePlugin
from sleekxmpp.xmlstream import register_stanza_plugin
from sleekxmpp.plugins.xep_0221 import stanza, Media, URI
from sleekxmpp.plugins.xep_0004 import FormField
log = logging.getLogger(__name__)
class XEP_0221(BasePlugin):
name = 'xep_0221'
description = 'XEP-0221: Data Forms Media Element'
dependencies = set(['xep_0004'])
def plugin_init(self):
register_stanza_plugin(FormField, Media)

View file

@ -0,0 +1,42 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.xmlstream import ElementBase, register_stanza_plugin
class Media(ElementBase):
name = 'media'
namespace = 'urn:xmpp:media-element'
plugin_attrib = 'media'
interfaces = set(['height', 'width', 'alt'])
def add_uri(self, value, itype):
uri = URI()
uri['value'] = value
uri['type'] = itype
self.append(uri)
class URI(ElementBase):
name = 'uri'
namespace = 'urn:xmpp:media-element'
plugin_attrib = 'uri'
plugin_multi_attrib = 'uris'
interfaces = set(['type', 'value'])
def get_value(self):
return self.xml.text
def set_value(self, value):
self.xml.text = value
def del_value(self):
sel.xml.text = ''
register_stanza_plugin(Media, URI, iterable=True)

View file

@ -9,5 +9,5 @@
# We don't want to have to import the entire library # We don't want to have to import the entire library
# just to get the version info for setup.py # just to get the version info for setup.py
__version__ = '1.1.6' __version__ = '1.1.7'
__version_info__ = (1, 1, 6, '', 0) __version_info__ = (1, 1, 7, '', 0)

View file

@ -1003,11 +1003,11 @@ class ElementBase(object):
last_xml = element last_xml = element
element = last_xml element = last_xml
if element.attrib.get('{%s}lang' % XML_NS, default_lang) != lang: if lang:
element = ET.Element(ename) if element.attrib.get('{%s}lang' % XML_NS, default_lang) != lang:
if lang: element = ET.Element(ename)
element.attrib['{%s}lang' % XML_NS] = lang element.attrib['{%s}lang' % XML_NS] = lang
parent.append(element) parent.append(element)
element.text = text element.text = text
return element return element

View file

@ -212,6 +212,9 @@ class XMLStream(object):
#: proxy based on the settings in :attr:`proxy_config`. #: proxy based on the settings in :attr:`proxy_config`.
self.use_proxy = False self.use_proxy = False
#: If set to ``True``, attempt to use IPv6.
self.use_ipv6 = True
#: An optional dictionary of proxy settings. It may provide: #: An optional dictionary of proxy settings. It may provide:
#: :host: The host offering proxy services. #: :host: The host offering proxy services.
#: :port: The port for the proxy service. #: :port: The port for the proxy service.