diff --git a/server/__pycache__/data_structs.cpython-311.pyc b/server/__pycache__/data_structs.cpython-311.pyc index 397569683b62a9073b0e3b720effd2f1eaba34ab..133d8fe1d896175c75442992de70415e7e6bd522 100644 Binary files a/server/__pycache__/data_structs.cpython-311.pyc and b/server/__pycache__/data_structs.cpython-311.pyc differ diff --git a/server/main.py b/server/main.py index 6821170123cc7ab68ae6cfcc01acd9df8680eddd..1fc670f98fd1896be354e23c80ffbdbe339aa14b 100644 --- a/server/main.py +++ b/server/main.py @@ -6,9 +6,12 @@ from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PAT from map.get_markers import get_markers import atexit import ssl +import keyboard app = Flask(__name__) +terminate_server = 0 +""" # Initialise MongoDB connection try: client = MongoClient(MONGO_URI, @@ -21,7 +24,8 @@ try: print("Connected to MongoDB") except Exception as e: print(f"Failed to connect to MongoDB: {e}") - +""" + # Define HTTP class class IceHTTP(BaseHTTPRequestHandler): def do_GET(self): @@ -29,25 +33,30 @@ class IceHTTP(BaseHTTPRequestHandler): self.send_response(200) self.send_header("Content-type", "text/plain") self.end_headers() + self.wfile.write(b"Root path hit!") elif self.path == '/update_map': + # Fetch marker data markers_data, resp_code = get_markers() + # Set headers self.send_response(resp_code) self.send_header("Content-type", "application/json") self.end_headers() - # Write the JSON data directly to the response - self.wfile.write(markers_data.encode('utf-8')) + # Write the JSON data to response object + self.wfile.write(markers_data) - elif self.path == '/test_endpoint': - self.send_response(200) - self.send_header("Content-type", "text/plain") - self.end_headers() - self.wfile.write(b"Test path hit!") +# Listen for pressing of q key to terminate server +def on_key_press(server, event): + if event.name == 'q': + print('Terminating server...') + server.server_close() + keyboard.unhook_all() + quit() -# Start a server on port 8443 using defined HTTP class +# Start a server on port 8443 using self defined HTTP class if __name__ == "__main__": print("Starting server on port ", PORT) try: @@ -60,14 +69,11 @@ if __name__ == "__main__": server.socket = ssl_context.wrap_socket(server.socket, server_side=True) print("Server running on port ", PORT) - server.serve_forever() - except Exception as e: - print(f"Failed to start server on port {PORT}: {e}") + # Register key press event handler + keyboard.on_press(lambda event: on_key_press(server, event)) -def on_termination(): - print("Server is terminating.") + server.serve_forever() -# Register the function to be called on exit -atexit.register(on_termination) - \ No newline at end of file + except Exception as e: + print(f"Failed to start server on port {PORT}: {e}") diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc index 15e055720f597867380f0eb67732a0402d57b8eb..43698edae3b8e474e9db41d43ba5065054d66146 100644 Binary files a/server/map/__pycache__/get_markers.cpython-311.pyc and b/server/map/__pycache__/get_markers.cpython-311.pyc differ diff --git a/server/map/get_markers.py b/server/map/get_markers.py index 06a95e2092447ab806311837e7d1b44c5598ef45..fa7524e34fea6b65ad6a6d6fe604924a0799c52a 100644 --- a/server/map/get_markers.py +++ b/server/map/get_markers.py @@ -28,6 +28,7 @@ def get_markers(): MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"), ] + # NB: return test data as JSON return json.dumps([marker.to_dict() for marker in testData]), 200 except Exception as e: