(self, req)
| 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): |
no test coverage detected