import cgi import datetime import pymysql 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 if env["PATH_INFO"] == "/endpoint": try: device = args["device"][0] except: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "device is required.".encode() try: latitude = float(args["lat"][0].replace(",", ".")) longitude = float(args["lon"][0].replace(",", ".")) except Exception as e: re("400 Bad Request", []) yield "

400 Bad Request

".encode() yield "lat and lon are required.".encode() return try: altitude = float(args["alt"][0].replace(",", ".")) except: altitude = None try: timestamp = datetime.datetime.fromtimestamp(float(args["t"][0]) / 1000) except: timestamp = datetime.datetime.now() timestr = timestamp.strftime('%Y-%m-%d %H:%M:%S') sql = "INSERT INTO tracker(ts, device, lat, lon, alt) VALUES (\"%s\", \"%s\", %s, %s, %s);" % (timestr, device, str(latitude), str(longitude), str(altitude) or "None")