From 610493260e00368f411e6985cbdefe87b40a0b54 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Thu, 12 Oct 2017 13:14:23 +0200 Subject: [PATCH] Build SQL query for endpoint --- main.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 main.py 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") +