(self, client: Client, message)
| 571 | return self.filter_by_since_limit(ohlcv, since, limit, 0, True) |
| 572 | |
| 573 | def handle_ohlcv(self, client: Client, message): |
| 574 | # |
| 575 | # { |
| 576 | # "channel": "market_e_btcusdt_kline_1min", |
| 577 | # "data": [], |
| 578 | # "tick": { |
| 579 | # "amount": 396539282326.3, |
| 580 | # "close": 19517.1, |
| 581 | # "ds": "2022-07-13 14:00:00", |
| 582 | # "high": 19556.5, |
| 583 | # "id": 1657692000, |
| 584 | # "low": 19465.1, |
| 585 | # "open": 19507.3, |
| 586 | # "vol": 20325940 |
| 587 | # }, |
| 588 | # "ts": 1657696418000, |
| 589 | # "status": "ok" |
| 590 | # } |
| 591 | # |
| 592 | channel = self.safe_string(message, 'channel') |
| 593 | parts = channel.split('_') |
| 594 | wsBaseQuote = self.safe_string_lower(parts, 2) |
| 595 | market = self.find_swap_market_by_ws_base_quote(wsBaseQuote) |
| 596 | if market is None: |
| 597 | return |
| 598 | symbol = market['symbol'] |
| 599 | wsInterval = self.safe_string(parts, 4) |
| 600 | futuresTimeframes = self.safe_dict(self.options, 'futuresTimeframes', {}) |
| 601 | timeframe = self.find_timeframe(wsInterval, futuresTimeframes) |
| 602 | tick = self.safe_value(message, 'tick') |
| 603 | if tick is None: |
| 604 | return |
| 605 | parsed = self.parse_ws_ohlcv(tick, market) |
| 606 | if not (symbol in self.ohlcvs): |
| 607 | self.ohlcvs[symbol] = {} |
| 608 | if not (timeframe in self.ohlcvs[symbol]): |
| 609 | limit = self.safe_integer(self.options, 'OHLCVLimit', 1000) |
| 610 | self.ohlcvs[symbol][timeframe] = ArrayCacheByTimestamp(limit) |
| 611 | stored = self.ohlcvs[symbol][timeframe] |
| 612 | stored.append(parsed) |
| 613 | messageHash = 'ohlcv:' + symbol + ':' + timeframe |
| 614 | client.resolve(stored, messageHash) |
| 615 | |
| 616 | def parse_ws_ohlcv(self, tick, market=None) -> list: |
| 617 | symbol = market['symbol'] |
no test coverage detected