summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime “pep” Buquet <pep@bouah.net>2019-04-14 02:21:09 +0100
committerMaxime “pep” Buquet <pep@bouah.net>2019-04-14 02:34:22 +0100
commit412a9169bd2052b794a1d29705f470cd0e2735a1 (patch)
tree4db28b0a56fc6e9841c0f75f5eaa62576ec45ac9
parent72b355de8cc0d4f681f0f5b84e6c6fe9f3bedce7 (diff)
downloadslixmpp-412a9169bd2052b794a1d29705f470cd0e2735a1.tar.gz
slixmpp-412a9169bd2052b794a1d29705f470cd0e2735a1.tar.bz2
slixmpp-412a9169bd2052b794a1d29705f470cd0e2735a1.tar.xz
slixmpp-412a9169bd2052b794a1d29705f470cd0e2735a1.zip
Fixes #3432. Allow execute to be used with the meaning of 'next'.adhoc-execute-next
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
-rw-r--r--slixmpp/plugins/xep_0050/adhoc.py37
1 files changed, 21 insertions, 16 deletions
diff --git a/slixmpp/plugins/xep_0050/adhoc.py b/slixmpp/plugins/xep_0050/adhoc.py
index 2e3d7484..67a4ecb5 100644
--- a/slixmpp/plugins/xep_0050/adhoc.py
+++ b/slixmpp/plugins/xep_0050/adhoc.py
@@ -96,24 +96,10 @@ class XEP_0050(BasePlugin):
register_stanza_plugin(Iq, Command)
register_stanza_plugin(Command, Form, iterable=True)
- self.xmpp.add_event_handler('command_execute',
- self._handle_command_start)
- self.xmpp.add_event_handler('command_next',
- self._handle_command_next)
- self.xmpp.add_event_handler('command_cancel',
- self._handle_command_cancel)
- self.xmpp.add_event_handler('command_complete',
- self._handle_command_complete)
+ self.xmpp.add_event_handler('command', self._handle_command_all)
def plugin_end(self):
- self.xmpp.del_event_handler('command_execute',
- self._handle_command_start)
- self.xmpp.del_event_handler('command_next',
- self._handle_command_next)
- self.xmpp.del_event_handler('command_cancel',
- self._handle_command_cancel)
- self.xmpp.del_event_handler('command_complete',
- self._handle_command_complete)
+ self.xmpp.del_event_handler('command', self._handle_command_all)
self.xmpp.remove_handler('Ad-Hoc Execute')
self.xmpp['xep_0030'].del_feature(feature=Command.namespace)
self.xmpp['xep_0030'].set_items(node=Command.namespace, items=tuple())
@@ -201,8 +187,27 @@ class XEP_0050(BasePlugin):
def _handle_command(self, iq):
"""Raise command events based on the command action."""
+ self.xmpp.event('command', iq)
self.xmpp.event('command_%s' % iq['command']['action'], iq)
+ def _handle_command_all(self, iq: Iq) -> None:
+ action = iq['command']['action']
+ sessionid = iq['command']['sessionid']
+ session = self.sessions.get(sessionid)
+
+ if session is None:
+ return self._handle_command_start(iq)
+
+ if action in ('next', 'execute'):
+ return self._handle_command_next(iq)
+ if action == 'prev':
+ return self._handle_command_prev(iq)
+ if action == 'complete':
+ return self._handle_command_complete(iq)
+ if action == 'cancel':
+ return self._handle_command_cancel(iq)
+ return None
+
def _handle_command_start(self, iq):
"""
Process an initial request to execute a command.