diff --git a/moonraker/app.py b/moonraker/app.py index 54a5256..1e6e4e3 100644 --- a/moonraker/app.py +++ b/moonraker/app.py @@ -156,7 +156,6 @@ class MoonrakerApp: params = {} params['server'] = self.server params['auth'] = self.auth - params['methods'] = api_def.request_methods params['arg_parser'] = api_def.parser params['remote_callback'] = api_def.endpoint self.mutable_router.add_handler( @@ -236,32 +235,24 @@ class MoonrakerApp: # ***** Dynamic Handlers***** class RemoteRequestHandler(AuthorizedRequestHandler): - def initialize(self, remote_callback, server, auth, - methods, arg_parser): + def initialize(self, remote_callback, server, auth, arg_parser): super(RemoteRequestHandler, self).initialize(server, auth) self.remote_callback = remote_callback - self.methods = methods self.query_parser = arg_parser async def get(self): - if 'GET' in self.methods: - await self._process_http_request('GET') - else: - raise tornado.web.HTTPError(405) + await self._process_http_request() async def post(self): - if 'POST' in self.methods: - await self._process_http_request('POST') - else: - raise tornado.web.HTTPError(405) + await self._process_http_request() - async def _process_http_request(self, method): + async def _process_http_request(self): args = {} if self.request.query: args = self.query_parser(self.request) try: result = await self.server.make_request( - self.remote_callback, method, args) + self.remote_callback, args) except ServerError as e: raise tornado.web.HTTPError( e.status_code, str(e)) from e diff --git a/moonraker/moonraker.py b/moonraker/moonraker.py index 5344ac1..59db882 100644 --- a/moonraker/moonraker.py +++ b/moonraker/moonraker.py @@ -217,7 +217,7 @@ class Server: async def _request_endpoints(self): try: - result = await self.make_request("list_endpoints", "GET", {}) + result = await self.make_request("list_endpoints", {}) except ServerError: return endpoints = result.get('hooks', {}) @@ -231,7 +231,7 @@ class Server: async def _check_available_objects(self): try: - result = await self.make_request("objects/list", "GET", {}) + result = await self.make_request("objects/list", {}) except ServerError as e: logging.info( f"{e}\nUnable to retreive Klipper Object List") @@ -249,7 +249,7 @@ class Server: async def _check_ready(self): try: - result = await self.make_request("info", "GET", {}) + result = await self.make_request("info", {}) except ServerError as e: logging.info( f"{e}\nKlippy info request error. This indicates that\n" @@ -289,8 +289,8 @@ class Server: def _process_status_update(self, status): self.send_event("server:status_update", status) - async def make_request(self, path, method, args): - base_request = BaseRequest(path, method, args) + async def make_request(self, rpc_method, params): + base_request = BaseRequest(rpc_method, params) self.pending_requests[base_request.id] = base_request self.ioloop.spawn_callback( self.send_klippy_request, base_request) @@ -325,11 +325,10 @@ class Server: # Basic WebRequest class, easily converted to dict for json encoding class BaseRequest: - def __init__(self, path, method, args): + def __init__(self, rpc_method, params): self.id = id(self) - self.path = path - self.method = method - self.args = args + self.rpc_method = rpc_method + self.params = params self._event = Event() self.response = None @@ -343,7 +342,7 @@ class BaseRequest: except TimeoutError: pending_time = time.time() - start_time logging.info( - f"Request '{self.method} {self.path}' pending:" + f"Request '{self.rpc_method}' pending: " f"{pending_time:.2f} seconds") self._event.clear() continue @@ -357,8 +356,8 @@ class BaseRequest: self._event.set() def to_dict(self): - return {'id': self.id, 'path': self.path, - 'method': self.method, 'args': self.args} + return {'id': self.id, 'method': self.rpc_method, + 'params': self.params} def main(): # Parse start arguments diff --git a/moonraker/plugins/file_manager.py b/moonraker/plugins/file_manager.py index 59e3e1e..b40787e 100644 --- a/moonraker/plugins/file_manager.py +++ b/moonraker/plugins/file_manager.py @@ -168,7 +168,7 @@ class FileManager: async def _handle_operation_check(self, requested_path): # Get virtual_sdcard status result = await self.server.make_request( - "objects/status", 'GET', {'print_stats': []}) + "objects/status", {'print_stats': []}) pstats = result.get('print_stats', {}) loaded_file = pstats.get('filename', "") state = pstats.get('state', "") diff --git a/moonraker/plugins/gcode_apis.py b/moonraker/plugins/gcode_apis.py index 274f97b..fac71b5 100644 --- a/moonraker/plugins/gcode_apis.py +++ b/moonraker/plugins/gcode_apis.py @@ -32,8 +32,7 @@ class GCodeAPIs: async def _send_gcode(self, script): args = {'script': script} - result = await self.server.make_request( - GCODE_ENDPOINT, 'POST', args) + result = await self.server.make_request(GCODE_ENDPOINT, args) return result async def gcode_pause(self, path, method, args): diff --git a/moonraker/plugins/paneldue.py b/moonraker/plugins/paneldue.py index b0bc7d6..4a8fa43 100644 --- a/moonraker/plugins/paneldue.py +++ b/moonraker/plugins/paneldue.py @@ -208,9 +208,9 @@ class PanelDue: 'M999': lambda args: "FIRMWARE_RESTART" } - async def _klippy_request(self, command, method='GET', args={}): + async def _klippy_request(self, command, args={}): try: - result = await self.server.make_request(command, method, args) + result = await self.server.make_request(command, args) except self.server.error as e: script = args.get('script', "") if script in ["RESTART", "FIRMWARE_RESTART"] and \ @@ -276,8 +276,7 @@ class PanelDue: self.heaters.append(cfg) sub_args[cfg] = [] try: - await self._klippy_request( - "objects/subscription", method='POST', args=sub_args) + await self._klippy_request("objects/subscription", args=sub_args) except PanelDueError: logging.exception("Unable to complete subscription request") self.is_shutdown = False @@ -303,7 +302,7 @@ class PanelDue: async def process_line(self, line): # If we find M112 in the line then skip verification if "M112" in line.upper(): - await self._klippy_request("emergency_stop", method='POST') + await self._klippy_request("emergency_stop") return # Get line number @@ -373,8 +372,7 @@ class PanelDue: try: args = {'script': script} - await self._klippy_request( - "gcode/script", method='POST', args=args) + await self._klippy_request("gcode/script", args=args) except PanelDueError: msg = f"Error executing script {script}" self.handle_gcode_response("!! " + msg) diff --git a/moonraker/plugins/temperature_store.py b/moonraker/plugins/temperature_store.py index e40be71..88e9283 100644 --- a/moonraker/plugins/temperature_store.py +++ b/moonraker/plugins/temperature_store.py @@ -38,7 +38,7 @@ class TemperatureStore: # Fetch sensors try: result = await self.server.make_request( - "objects/status", 'GET', {'heaters': []}) + "objects/status", {'heaters': []}) except self.server.error as e: logging.info(f"Error Configuring Sensors: {e}") return @@ -49,7 +49,7 @@ class TemperatureStore: sub = {s: [] for s in sensors} try: result = await self.server.make_request( - "objects/subscription", 'POST', sub) + "objects/subscription", sub) except self.server.error as e: logging.info(f"Error subscribing to sensors: {e}") return diff --git a/moonraker/websockets.py b/moonraker/websockets.py index a48e7cf..9c96e6b 100644 --- a/moonraker/websockets.py +++ b/moonraker/websockets.py @@ -134,17 +134,16 @@ class WebsocketManager: api_def.endpoint, r_method, callback) else: # Callback is a remote method - rpc_cb = self._generate_callback(api_def.endpoint, r_method) + rpc_cb = self._generate_callback(api_def.endpoint) self.rpc.register_method(cmd, rpc_cb) def remove_handler(self, ws_method): for prefix in ["get", "post", "delete"]: self.rpc.remove_method(prefix + "_" + ws_method) - def _generate_callback(self, endpoint, request_method): + def _generate_callback(self, endpoint): async def func(**kwargs): - result = await self.server.make_request( - endpoint, request_method, kwargs) + result = await self.server.make_request(endpoint, kwargs) return result return func