diff options
author | Maxime “pep” Buquet <pep@bouah.net> | 2019-04-14 02:21:09 +0100 |
---|---|---|
committer | Maxime “pep” Buquet <pep@bouah.net> | 2019-04-14 02:34:22 +0100 |
commit | 412a9169bd2052b794a1d29705f470cd0e2735a1 (patch) | |
tree | 4db28b0a56fc6e9841c0f75f5eaa62576ec45ac9 | |
parent | 72b355de8cc0d4f681f0f5b84e6c6fe9f3bedce7 (diff) | |
download | slixmpp-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.py | 37 |
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. |