diff options
Diffstat (limited to 'poezio/core')
-rw-r--r-- | poezio/core/commands.py | 22 | ||||
-rw-r--r-- | poezio/core/handlers.py | 19 |
2 files changed, 23 insertions, 18 deletions
diff --git a/poezio/core/commands.py b/poezio/core/commands.py index a6d8bcbb..8c7cbcd2 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -16,7 +16,6 @@ from slixmpp.xmlstream.handler import Callback from slixmpp.xmlstream.matcher import StanzaPath from poezio import common -from poezio import fixes from poezio import pep from poezio import tabs from poezio.bookmarks import Bookmark @@ -297,29 +296,16 @@ class CommandCore: """ /version <jid> """ - - def callback(res): - "Callback for /version" - if not res: - return self.core.information('Could not get the software' - ' version from %s' % jid, - 'Warning') - version = '%s is running %s version %s on %s' % ( - jid, res.get('name') or 'an unknown software', - res.get('version') or 'unknown', - res.get('os') or 'an unknown platform') - self.core.information(version, 'Info') - if args is None: return self.help('version') - jid = safeJID(args[0]) if jid.resource or jid not in roster or not roster[jid].resources: - fixes.get_version(self.core.xmpp, jid, callback=callback) + self.core.xmpp.plugin['xep_0092'].get_version( + jid, callback=self.core.handler.on_version_result) elif jid in roster: for resource in roster[jid].resources: - fixes.get_version( - self.core.xmpp, resource.jid, callback=callback) + self.core.xmpp.plugin['xep_0092'].get_version( + resource.jid, callback=self.core.handler.on_version_result) def _empty_join(self): tab = self.core.current_tab() diff --git a/poezio/core/handlers.py b/poezio/core/handlers.py index 60cf405d..8c799b58 100644 --- a/poezio/core/handlers.py +++ b/poezio/core/handlers.py @@ -913,6 +913,25 @@ class HandlerCore: _composing_tab_state(tab, state) self.core.refresh_tab_win() + def on_version_result(self, iq): + """ + Handle the result of a /version command. + """ + jid = iq['from'] + if iq['type'] == 'error': + error_condition = iq['error']['condition'] + error_text = iq['error']['text'] + reply = '%s: %s' % (error_condition, error_text) if error_text else error_condition + return self.core.information('Could not get the software ' + 'version from %s: %s' % (jid, reply), + 'Warning') + res = iq['software_version'] + version = '%s is running %s version %s on %s' % ( + jid, res.get('name', 'an unknown software'), + res.get('version', 'unknown'), + res.get('os', 'an unknown platform')) + self.core.information(version, 'Info') + ### subscription-related handlers ### def on_roster_update(self, iq): |