diff options
author | Maxime “pep” Buquet <pep@bouah.net> | 2019-04-27 12:59:23 +0100 |
---|---|---|
committer | Maxime “pep” Buquet <pep@bouah.net> | 2019-04-27 12:59:23 +0100 |
commit | 40053518aa59786b16c26a90094284c9d068126f (patch) | |
tree | 3707268349053ce46c0900611a753ad648c5ef7b | |
parent | 1ee0f72eada2fd7abf865805b14b868993ed5beb (diff) | |
parent | 412a9169bd2052b794a1d29705f470cd0e2735a1 (diff) | |
download | slixmpp-40053518aa59786b16c26a90094284c9d068126f.tar.gz slixmpp-40053518aa59786b16c26a90094284c9d068126f.tar.bz2 slixmpp-40053518aa59786b16c26a90094284c9d068126f.tar.xz slixmpp-40053518aa59786b16c26a90094284c9d068126f.zip |
Merge remote-tracking branch 'origin/mr/13'
-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. |