MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / handleRequest

Method handleRequest

src/Ui/UiWebsocket.py:206–239  ·  view source on GitHub ↗
(self, req)

Source from the content-addressed store, hash-verified

204
205 # Handle incoming messages
206 def handleRequest(self, req):
207
208 cmd = req.get("cmd")
209 params = req.get("params")
210 self.permissions = self.getPermissions(req["id"])
211
212 if cmd == "response": # It's a response to a command
213 return self.actionResponse(req["to"], req["result"])
214 else: # Normal command
215 func_name = self.getCmdFuncName(cmd)
216 func = getattr(self, func_name, None)
217 if not func: # Unknown command
218 return self.response(req["id"], {"error": "Unknown command: %s" % cmd})
219
220 if not self.hasCmdPermission(cmd): # Admin commands
221 return self.response(req["id"], {"error": "You don't have permission to run %s" % cmd})
222
223 # Execute in parallel
224 func_flags = flag.db.get(self.getCmdFuncName(cmd), ())
225 if func_flags and "async_run" in func_flags:
226 func = self.asyncWrapper(func)
227
228 # Support calling as named, unnamed parameters and raw first argument too
229 if type(params) is dict:
230 result = func(req["id"], **params)
231 elif type(params) is list:
232 result = func(req["id"], *params)
233 elif params:
234 result = func(req["id"], params)
235 else:
236 result = func(req["id"])
237
238 if result is not None:
239 self.response(req["id"], result)
240
241 # Format site info
242 def formatSiteInfo(self, site, create_user=True):

Callers 2

startMethod · 0.95
actionAsMethod · 0.45

Calls 7

getPermissionsMethod · 0.95
actionResponseMethod · 0.95
getCmdFuncNameMethod · 0.95
responseMethod · 0.95
hasCmdPermissionMethod · 0.95
asyncWrapperMethod · 0.95
getMethod · 0.45

Tested by

no test coverage detected