import requests class CommandHandler: def __init__(self): self.COMMANDER_ROOT_URL = "http://0.0.0.0:8889" self.COMMANDER_COMMANDS_URL = f"{self.COMMANDER_ROOT_URL}/command" self._check_commander_health() def _check_commander_health(self): response = requests.get(f"{self.COMMANDER_ROOT_URL}/test/health") status = response.json() if status["msg"] != "ok": raise Exception(f"commander service is unavailable: {self.COMMANDER_ROOT_URL}") def _move(self, direction, distance): response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/move/{direction}/{distance}") print(response.json()) def _turn(self, direction, degree): response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/turn/{direction}/{degree}") print(response.json()) def _takeoff(self): response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/takeoff") print(response.json()) def _land(self): response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/land") print(response.json()) def _end_session(self): response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/end") print(response.json()) def handle(self, cmd: dict): #print(f"commanding for: {cmd}") if cmd["command"] == "move": self._move( direction=cmd["direction"], distance=cmd["distance_angle"] ) elif cmd["command"] == "turn": self._turn( direction=cmd["direction"], degree=cmd["distance_angle"] ) elif cmd["command"] == "takeoff": self._takeoff() elif cmd["command"] == "land": self._land() else: raise ValueError(f"Uknown command object: {cmd}")