def process_request(self, message: str) -> str: """Processes HTTP request and returns response.""" parser = HTTPParser() response = HTTPResponse() calc = Calculator() request = parser.parse_request(message) # Invalid request (no expression sent) if (not request["params"] or "expression" not in request["params"]): print("Request is invalid. Missing parameters.") return response.build_response(status=406, data="-1") expression = request["params"]["expression"][0] print("{}Expression received:{} {}".format(bcolors.OKBLUE, bcolors.ENDC, expression)) # Evaluate the expression try: result = calc.evaluate(expression) print("{}Expression valid{}, result = {}".format( bcolors.OKGREEN, bcolors.ENDC, result)) return response.build_response(status=200, data=result) # Send error message if not valid except Exception as exc: print("{}An exception occurred:{} {} ({})".format( bcolors.FAIL, bcolors.ENDC, str(exc), type(exc).__name__)) return response.build_response(status=406, data="-1") return ""
print() if exp == "exit": break request = http_req.build_request(method="POST", params={"expression": exp}) print("{}Making HTTP request...{}".format(bcolors.OKGREEN, bcolors.ENDC)) print("----------------------") print(request, "\n") print("{}Evaluating expression...{}".format(bcolors.OKGREEN, bcolors.ENDC)) print("------------------------") try: result = calc.evaluate(exp) print("Calculation result:", result, "\n") print("{}Retrieving HTTP response...{}".format(bcolors.OKGREEN, bcolors.ENDC)) print("---------------------------") response = http_resp.build_response(status=200, data=result) print(response, "\n") except Exception as ex: print( "An exception occurred: {} ({}).".format(str(ex), type(ex).__name__), "\n")
from calc import Calculator, OperationIncomplete, InvalidOperation, NotAnInteger calc = Calculator() print(calc.evaluate("+ 1 2")) print(calc.evaluate("/ 12 3")) try: print(calc.evaluate("/ 2 0")) except ZeroDivisionError as e: print(str(e)) print(calc.evaluate("+ 2 3 4")) try: print(calc.evaluate("* 2")) except OperationIncomplete as e: print(str(e)) try: print(calc.evaluate("& 2 3")) except InvalidOperation as e: print(str(e)) try: print(calc.evaluate("/ 2 3.4")) except NotAnInteger as e: print(str(e))