2 SleekXMPP: The Sleek XMPP Library
3 Copyright (C) 2010 Nathanael C. Fritz
4 This file is part of SleekXMPP.
6 See the file LICENSE for copying permission.
12 from sleekxmpp
import Iq
13 from sleekxmpp
.xmlstream
import register_stanza_plugin
14 from sleekxmpp
.xmlstream
.handler
import Callback
15 from sleekxmpp
.xmlstream
.matcher
import StanzaPath
16 from sleekxmpp
.plugins
.base
import base_plugin
17 from sleekxmpp
.plugins
.xep_0092
import Version
20 log
= logging
.getLogger(__name__
)
23 class xep_0092(base_plugin
):
26 XEP-0092: Software Version
29 def plugin_init(self
):
31 Start the XEP-0092 plugin.
34 self
.description
= "Software Version"
35 self
.stanza
= sleekxmpp
.plugins
.xep_0092
.stanza
37 self
.name
= self
.config
.get('name', 'SleekXMPP')
38 self
.version
= self
.config
.get('version', '0.1-dev')
39 self
.os
= self
.config
.get('os', '')
41 self
.getVersion
= self
.get_version
43 self
.xmpp
.register_handler(
44 Callback('Software Version',
45 StanzaPath('iq@=get/software_version'),
46 self
._handle
_version
))
48 register_stanza_plugin(Iq
, Version
)
52 Handle cross-plugin dependencies.
54 base_plugin
.post_init(self
)
55 self
.xmpp
.plugin
['xep_0030'].add_feature('jabber:iq:version')
57 def _handle_version(self
, iq
):
59 Respond to a software version query.
62 iq -- The Iq stanza containing the software version query.
65 iq
['software_version']['name'] = self
.name
66 iq
['software_version']['version'] = self
.version
67 iq
['software_version']['os'] = self
.os
70 def get_version(self
, jid
, ifrom
=None):
72 Retrieve the software version of a remote agent.
75 jid -- The JID of the entity to query.
82 iq
['query'] = Version
.namespace
86 if result
and result
['type'] != 'error':
87 return result
['software_version'].values