diff --git a/main.py b/main.py index 94aab59..f071097 100644 --- a/main.py +++ b/main.py @@ -14,7 +14,7 @@ def getDatabase(path = "config.cfg"): name = config.get("Database", "name") conn = pymysql.connect(host, user, pwd, name) - cur = conn.cursor() + cur = conn.cursor(pymysql.cursors.DictCursor) return conn, cur @@ -27,18 +27,19 @@ def application(env, re): re("405 Method Not Allowed", []) return - if env["PATH_INFO"] == "/endpoint": + if env["PATH_INFO"] in ("/endpoint", "/endpoint.php"): try: device = args["device"][0] except: re("400 Bad Request", []) yield "

400 Bad Request

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

400 Bad Request

".encode() yield "lat and lon are required.".encode() @@ -61,4 +62,49 @@ def application(env, re): cur.execute(sql, (timestr, device, str(latitude), str(longitude), str(altitude) if altitude != None else None)) conn.commit() - + + re("200 OK", []) + yield "OK".encode() + return + + if env["PATH_INFO"] in ("/location", "/location.php"): + try: + device = args["device"][0] + except: + re("400 Bad Request", []) + yield "

400 Bad Request

".encode() + yield "device is required.".encode() + return + + conn, cur = getDatabase() + + cur.execute("SELECT * FROM tracker WHERE device = %s ORDER BY ts DESC LIMIT 1;", device) + row = cur.fetchone() + + re("200 OK", [["Content-Type", "text/html"]]) + yield (""" + + + + Current Location + + + + + + + +

My location at %s

+

(last known position where I had a GPS signal, a network connection, and some battery power)

+ +
+ + + + +""" % (row["ts"], row["lat"], row["lon"], row["lat"], row["lon"])).encode() + return