From 1cf1a5023f9752e0b132ec9355cd26efc2e4a3a5 Mon Sep 17 00:00:00 2001 From: Giuseppe Pes Date: Sat, 28 Dec 2024 16:06:43 -0500 Subject: [PATCH] Add AssetCTX websocket endpoint --- hyperliquid/info.py | 8 ++++---- hyperliquid/websocket_manager.py | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hyperliquid/info.py b/hyperliquid/info.py index f0f10a8..028de27 100644 --- a/hyperliquid/info.py +++ b/hyperliquid/info.py @@ -509,16 +509,16 @@ def query_user_to_multi_sig_signers(self, multi_sig_user: str) -> Any: return self.post("/info", {"type": "userToMultiSigSigners", "user": multi_sig_user}) def subscribe(self, subscription: Subscription, callback: Callable[[Any], None]) -> int: - if subscription["type"] == "l2Book" or subscription["type"] == "trades" or subscription["type"] == "candle": - subscription["coin"] = self.name_to_coin[subscription["coin"]] + if subscription["type"] == "l2Book" or subscription["type"] == "trades" or subscription["type"] == "candle" or subscription['type'] == 'activeAssetCtx': + subscription["coin"] = self.name_to_coin[subscription["coin"]] if self.ws_manager is None: raise RuntimeError("Cannot call subscribe since skip_ws was used") else: return self.ws_manager.subscribe(subscription, callback) def unsubscribe(self, subscription: Subscription, subscription_id: int) -> bool: - if subscription["type"] == "l2Book" or subscription["type"] == "trades" or subscription["type"] == "candle": - subscription["coin"] = self.name_to_coin[subscription["coin"]] + if subscription["type"] == "l2Book" or subscription["type"] == "trades" or subscription["type"] == "candle" or subscription['type'] == 'activeAssetCtx': + subscription["coin"] = self.name_to_coin[subscription["coin"]] if self.ws_manager is None: raise RuntimeError("Cannot call unsubscribe since skip_ws was used") else: diff --git a/hyperliquid/websocket_manager.py b/hyperliquid/websocket_manager.py index 20cb149..ed969dc 100644 --- a/hyperliquid/websocket_manager.py +++ b/hyperliquid/websocket_manager.py @@ -18,6 +18,8 @@ def subscription_to_identifier(subscription: Subscription) -> str: return f'l2Book:{subscription["coin"].lower()}' elif subscription["type"] == "trades": return f'trades:{subscription["coin"].lower()}' + elif subscription["type"] == "activeAssetCtx": + return f'activeAssetCtx:{subscription["coin"].lower()}' elif subscription["type"] == "userEvents": return "userEvents" elif subscription["type"] == "userFills": @@ -41,6 +43,8 @@ def ws_msg_to_identifier(ws_msg: WsMsg) -> Optional[str]: return "allMids" elif ws_msg["channel"] == "l2Book": return f'l2Book:{ws_msg["data"]["coin"].lower()}' + elif ws_msg["channel"] == "activeAssetCtx": + return f'activeAssetCtx:{ws_msg["data"]["coin"].lower()}' elif ws_msg["channel"] == "trades": trades = ws_msg["data"] if len(trades) == 0: