Ejemplo n.º 1
0
    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 ""
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
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))