UNPKG

tardis-dev

Version:

Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js

63 lines 2.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OkexSpreadsRealTimeFeed = void 0; const crypto_1 = __importDefault(require("crypto")); const handy_1 = require("../handy"); const realtimefeed_1 = require("./realtimefeed"); class OkexSpreadsRealTimeFeed extends realtimefeed_1.RealTimeFeedBase { constructor() { super(...arguments); this.wssURL = 'wss://ws.okx.com:8443/ws/v5/business'; this._hasCredentials = process.env.OKX_API_KEY !== undefined; } secondsSinceEpoch() { return Math.floor(Date.now() / 1000); } async onConnected() { if (this._hasCredentials) { const timestamp = this.secondsSinceEpoch().toString(); const sign = crypto_1.default.createHmac('sha256', process.env.OKX_API_SECRET_KEY).update(`${timestamp}GET/users/self/verify`).digest('base64'); this.send({ op: 'login', args: [ { apiKey: process.env.OKX_API_KEY, passphrase: process.env.OKX_API_PASSPHRASE, timestamp, sign } ] }); await (0, handy_1.wait)(50); } } mapToSubscribeMessages(filters) { const args = filters .map((filter) => { if (!filter.symbols || filter.symbols.length === 0) { throw new Error(`${this._exchange} RealTimeFeed requires explicitly specified symbols when subscribing to live feed`); } return filter.symbols.map((symbol) => { return { channel: filter.channel, sprdId: symbol }; }); }) .flatMap((s) => s); return [ { op: 'subscribe', args: [...new Set(args)] } ]; } messageIsError(message) { return message.event === 'error'; } } exports.OkexSpreadsRealTimeFeed = OkexSpreadsRealTimeFeed; //# sourceMappingURL=okexspreads.js.map