(self, client: Client, message)
| 4339 | client.reject(message, accountType) |
| 4340 | |
| 4341 | def handle_message(self, client: Client, message): |
| 4342 | # handle WebSocketAPI |
| 4343 | eventMsg = self.safe_dict(message, 'event') |
| 4344 | if eventMsg is not None: |
| 4345 | message = eventMsg |
| 4346 | status = self.safe_string(message, 'status') |
| 4347 | error = self.safe_value(message, 'error') |
| 4348 | if (error is not None) or (status is not None and status != '200'): |
| 4349 | self.handle_ws_error(client, message) |
| 4350 | return |
| 4351 | # user subscription wraps message in subscriptionId and event |
| 4352 | id = self.safe_string(message, 'id') |
| 4353 | subscriptions = self.safe_value(client.subscriptions, id) |
| 4354 | method = self.safe_value(subscriptions, 'method') |
| 4355 | if method is not None: |
| 4356 | method(client, message) |
| 4357 | return |
| 4358 | # handle other APIs |
| 4359 | methods = { |
| 4360 | 'depthUpdate': self.handle_order_book, |
| 4361 | 'trade': self.handle_trade, |
| 4362 | 'aggTrade': self.handle_trade, |
| 4363 | 'kline': self.handle_ohlcv, |
| 4364 | 'markPrice_kline': self.handle_ohlcv, |
| 4365 | 'indexPrice_kline': self.handle_ohlcv, |
| 4366 | '1hTicker@arr': self.handle_tickers, |
| 4367 | '4hTicker@arr': self.handle_tickers, |
| 4368 | '1dTicker@arr': self.handle_tickers, |
| 4369 | '24hrTicker@arr': self.handle_tickers, |
| 4370 | '24hrMiniTicker@arr': self.handle_tickers, |
| 4371 | '1hTicker': self.handle_tickers, |
| 4372 | '4hTicker': self.handle_tickers, |
| 4373 | '1dTicker': self.handle_tickers, |
| 4374 | '24hrTicker': self.handle_tickers, |
| 4375 | '24hrMiniTicker': self.handle_tickers, |
| 4376 | 'markPriceUpdate': self.handle_mark_prices, |
| 4377 | 'markPriceUpdate@arr': self.handle_mark_prices, |
| 4378 | 'bookTicker': self.handle_bids_asks, # there is no "bookTicker@arr" endpoint |
| 4379 | 'outboundAccountPosition': self.handle_balance, |
| 4380 | 'balanceUpdate': self.handle_balance, |
| 4381 | 'ACCOUNT_UPDATE': self.handle_acount_update, |
| 4382 | 'executionReport': self.handle_order_update, |
| 4383 | 'ORDER_TRADE_UPDATE': self.handle_order_update, |
| 4384 | 'ALGO_UPDATE': self.handle_order_update, |
| 4385 | 'forceOrder': self.handle_liquidation, |
| 4386 | 'eventStreamTerminated': self.handle_event_stream_terminated, |
| 4387 | 'externalLockUpdate': self.handle_balance, |
| 4388 | } |
| 4389 | event = self.safe_string(message, 'e') |
| 4390 | if isinstance(message, list): |
| 4391 | data = message[0] |
| 4392 | event = self.safe_string(data, 'e') + '@arr' |
| 4393 | method = self.safe_value(methods, event) |
| 4394 | if method is None: |
| 4395 | requestId = self.safe_string(message, 'id') |
| 4396 | if requestId is not None: |
| 4397 | self.handle_subscription_status(client, message) |
| 4398 | return |
nothing calls this directly
no test coverage detected