diff options
author | Arksine <arksine.code@gmail.com> | 2020-06-19 06:25:02 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2020-06-24 19:07:33 -0400 |
commit | 72962c5ca28789789509002fd7535da304b2f56c (patch) | |
tree | 8df64a2654a57afdadc85bdd6555bb6fac06b8cb | |
parent | 14ac4538611d75042a6b5fa53026969e18b09383 (diff) | |
download | kutter-72962c5ca28789789509002fd7535da304b2f56c.tar.gz kutter-72962c5ca28789789509002fd7535da304b2f56c.tar.xz kutter-72962c5ca28789789509002fd7535da304b2f56c.zip |
gcode: add webhooks support
Register "gcode/script", "gcode/help", "gcode/restart", and "gcode/firmware_restart" endpoints.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
-rw-r--r-- | klippy/gcode.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/klippy/gcode.py b/klippy/gcode.py index 1c3b2bcb..c9f8a81b 100644 --- a/klippy/gcode.py +++ b/klippy/gcode.py @@ -91,6 +91,16 @@ class GCodeParser: self.pending_commands = [] self.bytes_read = 0 self.input_log = collections.deque([], 50) + # Register webhooks + webhooks = self.printer.lookup_object('webhooks') + webhooks.register_endpoint( + "gcode/help", self._handle_remote_help) + webhooks.register_endpoint( + "gcode/script", self._handle_remote_script) + webhooks.register_endpoint( + "gcode/restart", self._handle_remote_restart) + webhooks.register_endpoint( + "gcode/firmware_restart", self._handle_remote_restart) # Command handling self.is_printer_ready = False self.mutex = self.reactor.mutex() @@ -349,6 +359,23 @@ class GCodeParser: if self.fd_handle is None: self.fd_handle = self.reactor.register_fd(self.fd, self._process_data) + def _handle_remote_help(self, web_request): + if web_request.get_method() != 'GET': + raise web_request.error("Invalid Request Method") + web_request.send(dict(self.gcode_help)) + def _handle_remote_restart(self, web_request): + if web_request.get_method() != 'POST': + raise web_request.error("Invalid Request Method") + path = web_request.get_path() + if path == "gcode/restart": + self.run_script('restart') + elif path == "gcode/firmware_restart": + self.run_script('firmware_restart') + def _handle_remote_script(self, web_request): + if web_request.get_method() != 'POST': + raise web_request.error("Invalid Request Method") + script = web_request.get('script') + self.run_script(script) def run_script_from_command(self, script): self._process_commands(script.split('\n'), need_ack=False) def run_script(self, script): |