def printerCommand(): if not printer.is_operational(): return make_response("Printer is not operational", 409) if "application/json" not in request.headers["Content-Type"]: return make_response("Expected content type JSON", 400) try: data = request.get_json() except BadRequest: return make_response("Malformed JSON body in request", 400) if data is None: return make_response("Malformed JSON body in request", 400) if "command" in data and "commands" in data: return make_response("'command' and 'commands' are mutually exclusive", 400) elif ("command" in data or "commands" in data) and "script" in data: return make_response( "'command'/'commands' and 'script' are mutually exclusive", 400 ) elif not ("command" in data or "commands" in data or "script" in data): return make_response("Need one of 'command', 'commands' or 'script'", 400) parameters = {} if "parameters" in data: parameters = data["parameters"] tags = {"source:api", "api:printer.command"} if "command" in data or "commands" in data: if "command" in data: commands = [data["command"]] else: if not isinstance(data["commands"], (list, tuple)): return make_response("'commands' needs to be a list", 400) commands = data["commands"] commandsToSend = [] for command in commands: commandToSend = command if len(parameters) > 0: commandToSend = command % parameters commandsToSend.append(commandToSend) printer.commands(commandsToSend, tags=tags) elif "script" in data: script_name = data["script"] context = {"parameters": parameters} if "context" in data: context["context"] = data["context"] try: printer.script(script_name, context=context, tags=tags) except UnknownScript: return make_response("Unknown script: {script_name}".format(**locals()), 404) return NO_CONTENT
def printerCommand(): if not printer.is_operational(): return make_response("Printer is not operational", 409) if not "application/json" in request.headers["Content-Type"]: return make_response("Expected content type JSON", 400) try: data = request.json except BadRequest: return make_response("Malformed JSON body in request", 400) if "command" in data and "commands" in data: return make_response("'command' and 'commands' are mutually exclusive", 400) elif ("command" in data or "commands" in data) and "script" in data: return make_response("'command'/'commands' and 'script' are mutually exclusive", 400) elif not ("command" in data or "commands" in data or "script" in data): return make_response("Need one of 'command', 'commands' or 'script'", 400) parameters = dict() if "parameters" in data: parameters = data["parameters"] tags = {"source:api", "api:printer.command"} if "command" in data or "commands" in data: if "command" in data: commands = [data["command"]] else: if not isinstance(data["commands"], (list, tuple)): return make_response("'commands' needs to be a list", 400) commands = data["commands"] commandsToSend = [] for command in commands: commandToSend = command if len(parameters) > 0: commandToSend = command % parameters commandsToSend.append(commandToSend) printer.commands(commandsToSend, tags=tags) elif "script" in data: script_name = data["script"] context = dict(parameters=parameters) if "context" in data: context["context"] = data["context"] try: printer.script(script_name, context=context, tags=tags) except UnknownScript: return make_response("Unknown script: {script_name}".format(**locals()), 404) return NO_CONTENT
def printerCommand(): if not printer.is_operational(): abort(409, description="Printer is not operational") if "application/json" not in request.headers["Content-Type"]: abort(400, description="Expected content type JSON") data = request.get_json() if data is None: abort(400, description="Malformed JSON body in request") if "command" in data and "commands" in data: abort(400, description="'command' and 'commands' are mutually exclusive") elif ("command" in data or "commands" in data) and "script" in data: abort(400, description="'command'/'commands' and 'script' are mutually exclusive") elif not ("command" in data or "commands" in data or "script" in data): abort(400, description="Need one of 'command', 'commands' or 'script'") parameters = {} if "parameters" in data: parameters = data["parameters"] tags = {"source:api", "api:printer.command"} if "command" in data or "commands" in data: if "command" in data: commands = [data["command"]] else: if not isinstance(data["commands"], (list, tuple)): abort(400, description="commands is invalid") commands = data["commands"] commandsToSend = [] for command in commands: commandToSend = command if len(parameters) > 0: commandToSend = command % parameters commandsToSend.append(commandToSend) printer.commands(commandsToSend, tags=tags) elif "script" in data: script_name = data["script"] context = {"parameters": parameters} if "context" in data: context["context"] = data["context"] try: printer.script(script_name, context=context, tags=tags) except UnknownScript: abort(404, description="Unknown script") return NO_CONTENT
def printerCommand(): if not (printer.is_operational() or printer.is_locked()): return make_response("Printer is not operational", 409) if not "application/json" in request.headers["Content-Type"]: return make_response("Expected content type JSON", 400) try: data = request.json except BadRequest: return make_response("Malformed JSON body in request", 400) if "command" in data and "commands" in data: return make_response("'command' and 'commands' are mutually exclusive", 400) elif ("command" in data or "commands" in data) and "script" in data: return make_response("'command'/'commands' and 'script' are mutually exclusive", 400) elif not ("command" in data or "commands" in data or "script" in data): return make_response("Need one of 'command', 'commands' or 'script'", 400) #<<<<<<< HEAD # commandsToSend = [] # for command in commands: # commandToSend = command # if len(parameters) > 0: # commandToSend = command % parameters # commandsToSend.append(commandToSend) # # if settings().getBoolean(["feature", "grbl"]): # commandsToSend.append("?") # # printer.commands(commandsToSend) #======= parameters = dict() if "parameters" in data: parameters = data["parameters"] if "command" in data or "commands" in data: if "command" in data: commands = [data["command"]] else: if not isinstance(data["commands"], (list, tuple)): return make_response("'commands' needs to be a list", 400) commands = data["commands"] commandsToSend = [] for command in commands: commandToSend = command if len(parameters) > 0: commandToSend = command % parameters commandsToSend.append(commandToSend) if settings().getBoolean(["feature", "grbl"]): commandsToSend.append("?") printer.commands(commandsToSend) elif "script" in data: script_name = data["script"] context = dict(parameters=parameters) if "context" in data: context["context"] = data["context"] try: printer.script(script_name, context=context) except UnknownScript: return make_response("Unknown script: {script_name}".format(**locals()), 404) #>>>>>>> upstream/maintenance return NO_CONTENT