diff --git a/app/internal/types.py b/app/internal/types.py index c3ac9b7..08bd60d 100644 --- a/app/internal/types.py +++ b/app/internal/types.py @@ -189,17 +189,26 @@ class ActiveClient: """ The active client model in memory for quicker access """ + client_id: str = None websocket = None - active_token: DiscordId = None + active_token: str = None nickname: str = None access_token: str = None - def __init__(self, websocket=None, active_token: DiscordId = None, nickname: str = None, access_token: str = None): + def __init__(self, client_id:str=None, websocket=None, active_token: s = None, nickname: str = None, access_token: str = None): + self.client_id = client_id self.active_token = active_token self.websocket = websocket self.nickname = nickname self.access_token = access_token + def json(self): + return { + "client_id": self.client_id, + "nickname": self.nickname, + "active_token": self.active_token + } + def __str__(self): """ Returns a neatly formatted string representation of the ActiveClient object. @@ -207,6 +216,7 @@ class ActiveClient: return (f"--- Active Client ---\n" f"Active Token: {self.active_token if self.active_token else 'N/A'}\n" f"Nickname: {self.nickname if self.nickname else 'N/A'}\n" + f"Nickname: {self.client_id if self.client_id else 'N/A'}\n" f"Access Token: {'[REDACTED]' if self.access_token else 'N/A'}\n" f"Websocket Connected: {'Yes' if self.websocket else 'No'}") diff --git a/app/routers/bot.py b/app/routers/bot.py index 05c5c4b..83edc42 100644 --- a/app/routers/bot.py +++ b/app/routers/bot.py @@ -199,7 +199,7 @@ def find_token_in_active_clients(target_token: str) -> bool: """ for client_id in current_app.active_clients: try: - if current_app.active_clients[client_id].active_token.token == target_token: + if current_app.active_clients[client_id].active_token == target_token: return True except Exception as e: pass diff --git a/app/routers/nodes.py b/app/routers/nodes.py index 1a335b1..911a661 100644 --- a/app/routers/nodes.py +++ b/app/routers/nodes.py @@ -22,6 +22,7 @@ async def register_client(websocket, client_id, client_nickname, active_token): current_app.active_clients[client_id].websocket = websocket current_app.active_clients[client_id].nickname = client_nickname current_app.active_clients[client_id].active_token = active_token + current_app.active_clients[client_id].client_id = client_id print(f"Client {client_id} connected.") # Create a JWT for the client @@ -150,7 +151,7 @@ async def send_command_to_all_clients(command_name, *args): @role_required(UserRoles.USER) async def get_nodes(): """API endpoint to list currently connected client IDs.""" - return jsonify(list(current_app.active_clients.keys())) + return jsonify([client.json() for client in current_app.active_clients]) @nodes_bp.route("/online", methods=['GET'])