Rename to slixmpp

This commit is contained in:
Florent Le Coz
2014-07-17 14:19:04 +02:00
parent e5582694c0
commit 5ab77c7452
514 changed files with 3473 additions and 3530 deletions
+20
View File
@@ -0,0 +1,20 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2010 Nathanael C. Fritz, Lance J.T. Stout
This file is part of Slixmpp.
See the file LICENSE for copying permission.
"""
from slixmpp.plugins.base import register_plugin
from slixmpp.plugins.xep_0092 import stanza
from slixmpp.plugins.xep_0092.stanza import Version
from slixmpp.plugins.xep_0092.version import XEP_0092
register_plugin(XEP_0092)
# Retain some backwards compatibility
xep_0092 = XEP_0092
+42
View File
@@ -0,0 +1,42 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2010 Nathanael C. Fritz
This file is part of Slixmpp.
See the file LICENSE for copying permission.
"""
from slixmpp.xmlstream import ElementBase, ET
class Version(ElementBase):
"""
XMPP allows for an agent to advertise the name and version of the
underlying software libraries, as well as the operating system
that the agent is running on.
Example version stanzas:
<iq type="get">
<query xmlns="jabber:iq:version" />
</iq>
<iq type="result">
<query xmlns="jabber:iq:version">
<name>Slixmpp</name>
<version>1.0</version>
<os>Linux</os>
</query>
</iq>
Stanza Interface:
name -- The human readable name of the software.
version -- The specific version of the software.
os -- The name of the operating system running the program.
"""
name = 'query'
namespace = 'jabber:iq:version'
plugin_attrib = 'software_version'
interfaces = set(('name', 'version', 'os'))
sub_interfaces = interfaces
+85
View File
@@ -0,0 +1,85 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2010 Nathanael C. Fritz
This file is part of Slixmpp.
See the file LICENSE for copying permission.
"""
import logging
import slixmpp
from slixmpp import Iq
from slixmpp.xmlstream import register_stanza_plugin
from slixmpp.xmlstream.handler import Callback
from slixmpp.xmlstream.matcher import StanzaPath
from slixmpp.plugins import BasePlugin
from slixmpp.plugins.xep_0092 import Version, stanza
log = logging.getLogger(__name__)
class XEP_0092(BasePlugin):
"""
XEP-0092: Software Version
"""
name = 'xep_0092'
description = 'XEP-0092: Software Version'
dependencies = set(['xep_0030'])
stanza = stanza
default_config = {
'software_name': 'Slixmpp',
'version': slixmpp.__version__,
'os': ''
}
def plugin_init(self):
"""
Start the XEP-0092 plugin.
"""
if 'name' in self.config:
self.software_name = self.config['name']
self.xmpp.register_handler(
Callback('Software Version',
StanzaPath('iq@type=get/software_version'),
self._handle_version))
register_stanza_plugin(Iq, Version)
def plugin_end(self):
self.xmpp.remove_handler('Software Version')
self.xmpp['xep_0030'].del_feature(feature='jabber:iq:version')
def session_bind(self, jid):
self.xmpp.plugin['xep_0030'].add_feature('jabber:iq:version')
def _handle_version(self, iq):
"""
Respond to a software version query.
Arguments:
iq -- The Iq stanza containing the software version query.
"""
iq.reply()
iq['software_version']['name'] = self.software_name
iq['software_version']['version'] = self.version
iq['software_version']['os'] = self.os
iq.send()
def get_version(self, jid, ifrom=None, block=True, timeout=None, callback=None):
"""
Retrieve the software version of a remote agent.
Arguments:
jid -- The JID of the entity to query.
"""
iq = self.xmpp.Iq()
iq['to'] = jid
iq['from'] = ifrom
iq['type'] = 'get'
iq['query'] = Version.namespace
return iq.send(block=block, timeout=timeout, callback=callback)