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.
**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**
- `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_0172',
'sleekxmpp/plugins/xep_0184',
'sleekxmpp/plugins/xep_0186',
'sleekxmpp/plugins/xep_0198',
'sleekxmpp/plugins/xep_0199',
'sleekxmpp/plugins/xep_0202',
'sleekxmpp/plugins/xep_0203',
'sleekxmpp/plugins/xep_0221',
'sleekxmpp/plugins/xep_0224',
'sleekxmpp/plugins/xep_0231',
'sleekxmpp/plugins/xep_0249',

View file

@ -46,10 +46,12 @@ __all__ = [
'xep_0163', # Personal Eventing Protocol
'xep_0172', # User Nickname
'xep_0184', # Message Receipts
'xep_0186', # Invisible Command
'xep_0198', # Stream Management
'xep_0199', # Ping
'xep_0202', # Entity Time
'xep_0203', # Delayed Delivery
'xep_0221', # Data Forms Media Element
'xep_0222', # Persistent Storage of Public Data via Pubsub
'xep_0223', # Persistent Storage of Private Data via Pubsub
'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
# just to get the version info for setup.py
__version__ = '1.1.6'
__version_info__ = (1, 1, 6, '', 0)
__version__ = '1.1.7'
__version_info__ = (1, 1, 7, '', 0)

View file

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

View file

@ -212,6 +212,9 @@ class XMLStream(object):
#: proxy based on the settings in :attr:`proxy_config`.
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:
#: :host: The host offering proxy services.
#: :port: The port for the proxy service.