diff --git a/ac-server-scripts-api.py b/ac-server-scripts-api.py index 2d17b2a..2edd599 100644 --- a/ac-server-scripts-api.py +++ b/ac-server-scripts-api.py @@ -117,40 +117,64 @@ class Handler(BaseHTTPRequestHandler): def handle_POST_path(self): if (self.path.startswith("/changetrack/")): - parts = self.path.split("/") - parts = [p for p in parts if p] # remove empty - track, config = self.extract_track_and_config(parts, 1) - print(f"Changing track to '{track}' with config '{config}'") - - success, message = change_track(track, config) - if success: - sysbus = dbus.SystemBus() - systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1') - manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager') - job = manager.RestartUnit('assetto-corsa-server.service', 'replace') - if job: - print("Successfully restarted assetto-corsa-server.service") - else: - print("Failed to restart assetto-corsa-server.service") - success = False - message = "Failed to restart assetto-corsa-server.service" - print(message) - if success: - self.send_response(200) - self.send_header("Content-type", "application/json") - self.end_headers() - response = {"status": "success", "message": message} - self.wfile.write(json.dumps(response).encode()) - return True - else: - self.send_response(400) - self.send_header("Content-type", "application/json") - self.end_headers() - response = {"status": "error", "message": message} - self.wfile.write(json.dumps(response).encode()) - return True + return self.handle_post_change_track() + if (self.path.startswith("/changecar/")): + return self.handle_post_change_car() return False + def handle_post_change_track(self): + parts = self.path.split("/") + parts = [p for p in parts if p] # remove empty + track, config = self.extract_track_and_config(parts, 1) + print(f"Changing track to '{track}' with config '{config}'") + + success, message = change_track(track, config) + if success: + sysbus = dbus.SystemBus() + systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1') + manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager') + job = manager.RestartUnit('assetto-corsa-server.service', 'replace') + if job: + print("Successfully restarted assetto-corsa-server.service") + else: + print("Failed to restart assetto-corsa-server.service") + success = False + message = "Failed to restart assetto-corsa-server.service" + print(message) + if success: + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + response = {"status": "success", "message": message} + self.wfile.write(json.dumps(response).encode()) + else: + self.send_response(400) + self.send_header("Content-type", "application/json") + self.end_headers() + response = {"status": "error", "message": message} + self.wfile.write(json.dumps(response).encode()) + + return True + + def handle_post_change_car(self): + length = int(self.headers.get("Content-Length", 0)) + + # 2. Lees de body + body = self.rfile.read(length).decode("utf-8") + + # 3. Parse JSON + import json + try: + data = json.loads(body) + except json.JSONDecodeError: + self.send_response(400) + self.send_header("Content-Type", "application/json") + self.end_headers() + self.wfile.write(b'{"error":"invalid json"}') + return + + print("Received cars:", data) + def send_image(self, img_path: str): if os.path.exists(img_path): self.send_response(200) diff --git a/index.html b/index.html index 7c84873..8cc04da 100644 --- a/index.html +++ b/index.html @@ -89,7 +89,6 @@ applyCarsBtn.addEventListener("click", applyCars); function applyCars() { - // Zoek alle car blocks const blocks = document.querySelectorAll(".car-block"); let cars = []; @@ -98,8 +97,8 @@ const carSelect = block.querySelector(".car-select"); const skinSelect = block.querySelector(".skin-select"); - const carName = carSelect?.value || null; - const skinName = skinSelect?.value || null; + const carName = carSelect?.value || ""; + const skinName = skinSelect?.value || ""; if (carName) { cars.push({ @@ -109,7 +108,6 @@ } }); - // Payload klaar const payload = { cars }; console.log("Sending cars:", payload);