import cgi import datetime import workers.conn import workers.val def application(env, re): if env["REQUEST_METHOD"] == "POST": args = cgi.parse_qs(env['wsgi.input'].readline().decode(), True) elif env["REQUEST_METHOD"] == "GET": args = cgi.parse_qs(env['QUERY_STRING'], True) else: re("405 Method Not Allowed", []) return try: rtype = args["type"][0] except: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "A request type must be provided.".encode() return if rtype.lower() in ["conn", "connection"]: try: frm = args["from"][0] to = args["to"][0] if not frm or not to: raise ValueError() except: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "\"from\" and \"to\" values are required for this type of request.".encode() return count = args["count"][0] if "count" in args and args["count"] else 3 date = args["date"][0] if "date" in args and args["date"] else datetime.datetime.strftime(datetime.datetime.now(),"%d.%m.%Y") time = args["time"][0] if "time" in args and args["time"] else datetime.datetime.strftime(datetime.datetime.now(),"%H:%M") mode = True if "mode" in args and args["mode"] and args["mode"][0].lower() == "arr" else False try: outtime = datetime.datetime.strptime("%s %s" % (date, time), "%d.%m.%Y %H:%M") except: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "The \"date\" value must be in DD.MM.YYYY format, the \"time\" value must be in HH:MM format." return try: output = workers.conn.worker(frm, to, count, outtime, mode) except Exception as e: re("500 Internal Server Error", []) yield "

500 Internal Server Error

".encode() if "debug" in args: yield str(e).encode() return re("200 OK", []) return output.encode() elif rtype.lower() in ["val", "validate"]: try: name = args["name"] if not name: raise ValueError() except: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "A \"name\" value is required for this type of request.".encode() return try: output = workers.val.worker(name) except: re("500 Internal Server Error", []) yield "

500 Internal Server Error

".encode() if "debug" in args: yield str(e).encode() return re("200 OK", []) return output.encode()