diff --git a/main.py b/main.py new file mode 100644 index 0000000..b6b9ef6 --- /dev/null +++ b/main.py @@ -0,0 +1,45 @@ +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") +