parent
ae172f84dd
commit
326de0f161
6 changed files with 29 additions and 76 deletions
|
@ -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()
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -25,23 +25,6 @@ def has_identity(xmpp, jid, identity, on_true=None, on_false=None):
|
|||
xmpp.plugin['xep_0030'].get_info(jid=jid, callback=_cb)
|
||||
|
||||
|
||||
def get_version(xmpp, jid, callback=None, **kwargs):
|
||||
def handle_result(res):
|
||||
if res and res['type'] != 'error':
|
||||
ret = res['software_version'].values
|
||||
else:
|
||||
ret = False
|
||||
if callback:
|
||||
callback(ret)
|
||||
return ret
|
||||
|
||||
iq = xmpp.make_iq_get(ito=jid)
|
||||
iq['query'] = 'jabber:iq:version'
|
||||
result = iq.send(callback=handle_result if callback else None)
|
||||
if not callback:
|
||||
return handle_result(result)
|
||||
|
||||
|
||||
def get_room_form(xmpp, room, callback):
|
||||
def _cb(result):
|
||||
if result["type"] == "error":
|
||||
|
|
|
@ -19,7 +19,6 @@ import curses
|
|||
from poezio.tabs.basetabs import OneToOneTab, Tab
|
||||
|
||||
from poezio import common
|
||||
from poezio import fixes
|
||||
from poezio import windows
|
||||
from poezio import xhtml
|
||||
from poezio.common import safeJID
|
||||
|
@ -240,18 +239,6 @@ class ConversationTab(OneToOneTab):
|
|||
"""
|
||||
/version [jid]
|
||||
"""
|
||||
|
||||
def callback(res):
|
||||
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:
|
||||
return self.core.command.version(args[0])
|
||||
jid = safeJID(self.name)
|
||||
|
@ -259,7 +246,8 @@ class ConversationTab(OneToOneTab):
|
|||
if jid in roster:
|
||||
resource = roster[jid].get_highest_priority_resource()
|
||||
jid = resource.jid if resource else jid
|
||||
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)
|
||||
|
||||
@command_args_parser.ignored
|
||||
def command_add(self):
|
||||
|
|
|
@ -1340,18 +1340,6 @@ class MucTab(ChatTab):
|
|||
"""
|
||||
/version <jid or nick>
|
||||
"""
|
||||
|
||||
def callback(res):
|
||||
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.core.command.help('version')
|
||||
nick = args[0]
|
||||
|
@ -1360,7 +1348,8 @@ class MucTab(ChatTab):
|
|||
jid = safeJID(jid + '/' + nick)
|
||||
else:
|
||||
jid = safeJID(nick)
|
||||
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)
|
||||
|
||||
@command_args_parser.quoted(1)
|
||||
def command_nick(self, args):
|
||||
|
|
|
@ -17,7 +17,6 @@ import curses
|
|||
|
||||
from poezio.tabs import OneToOneTab, MucTab, Tab
|
||||
|
||||
from poezio import fixes
|
||||
from poezio import windows
|
||||
from poezio import xhtml
|
||||
from poezio.common import safeJID
|
||||
|
@ -207,22 +206,11 @@ class PrivateTab(OneToOneTab):
|
|||
"""
|
||||
/version
|
||||
"""
|
||||
|
||||
def callback(res):
|
||||
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:
|
||||
return self.core.command.version(args[0])
|
||||
jid = safeJID(self.name)
|
||||
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)
|
||||
|
||||
@command_args_parser.quoted(0, 1)
|
||||
def command_info(self, arg):
|
||||
|
|
Loading…
Reference in a new issue