Przeglądaj źródła

fix endpoint format

tuanchris 3 miesięcy temu
rodzic
commit
d2ebb3a965
1 zmienionych plików z 19 dodań i 6 usunięć
  1. 19 6
      main.py

+ 19 - 6
main.py

@@ -1473,13 +1473,22 @@ async def dw_leds_color(request: dict):
     if not state.led_controller or state.led_provider != "dw_leds":
         raise HTTPException(status_code=400, detail="DW LEDs not configured")
 
-    color = request.get("color", [255, 0, 0])
-    if not isinstance(color, list) or len(color) != 3:
-        raise HTTPException(status_code=400, detail="Color must be [R, G, B] array")
+    # Accept both formats: {"r": 255, "g": 0, "b": 0} or {"color": [255, 0, 0]}
+    if "color" in request:
+        color = request["color"]
+        if not isinstance(color, list) or len(color) != 3:
+            raise HTTPException(status_code=400, detail="Color must be [R, G, B] array")
+        r, g, b = color[0], color[1], color[2]
+    elif "r" in request and "g" in request and "b" in request:
+        r = request["r"]
+        g = request["g"]
+        b = request["b"]
+    else:
+        raise HTTPException(status_code=400, detail="Color must include r, g, b fields or color array")
 
     try:
         controller = state.led_controller.get_controller()
-        return controller.set_color(color[0], color[1], color[2])
+        return controller.set_color(r, g, b)
     except Exception as e:
         logger.error(f"Failed to set DW LED color: {str(e)}")
         raise HTTPException(status_code=500, detail=str(e))
@@ -1493,9 +1502,11 @@ async def dw_leds_effects():
     try:
         controller = state.led_controller.get_controller()
         effects = controller.get_effects()
+        # Convert tuples to lists for JSON serialization
+        effects_list = [[eid, name] for eid, name in effects]
         return {
             "success": True,
-            "effects": [{"id": eid, "name": name} for eid, name in effects]
+            "effects": effects_list
         }
     except Exception as e:
         logger.error(f"Failed to get DW LED effects: {str(e)}")
@@ -1510,9 +1521,11 @@ async def dw_leds_palettes():
     try:
         controller = state.led_controller.get_controller()
         palettes = controller.get_palettes()
+        # Convert tuples to lists for JSON serialization
+        palettes_list = [[pid, name] for pid, name in palettes]
         return {
             "success": True,
-            "palettes": [{"id": pid, "name": name} for pid, name in palettes]
+            "palettes": palettes_list
         }
     except Exception as e:
         logger.error(f"Failed to get DW LED palettes: {str(e)}")