UNPKG

tlab-trading-toolkit

Version:

A trading toolkit for building advanced trading bots on the GDAX platform

68 lines (67 loc) 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /*************************************************************************************************************************** * @license * * Copyright 2017 Coinbase, Inc. * * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * * with the License. You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * * License for the specific language governing permissions and limitations under the License. * ***************************************************************************************************************************/ const ProductMap_1 = require("../exchanges/ProductMap"); const BitmexMarketFeed_1 = require("../exchanges/bitmex/BitmexMarketFeed"); const ExchangeFeed_1 = require("../exchanges/ExchangeFeed"); function getExchangeProduct(genericProduct) { return ProductMap_1.ProductMap.ExchangeMap.get('Bitmex').getExchangeProduct(genericProduct); } function getSubscribedFeeds(options, symbol) { return new Promise((resolve, reject) => { const config = { wsUrl: null, auth: null, logger: options.logger, }; const feed = ExchangeFeed_1.getFeed(BitmexMarketFeed_1.BitmexMarketFeed, config); if (!feed.isConnected()) { feed.reconnect(0); feed.on('websocket-open', () => { feed.subscribe(symbol).then(() => { return resolve(feed); }).catch((err) => { console.log('error', 'A websocket connection to Bitmex was established, but product subscription failed.', { reason: err.message }); return reject(err); }); return resolve(feed); }); } else { return resolve(feed); } }); } exports.getSubscribedFeeds = getSubscribedFeeds; function FeedFactory(logger, productIDs, auth) { auth = auth || { key: process.env.GEMINI_KEY, secret: process.env.GEMINI_SECRET }; productIDs = productIDs.map((genericProduct) => { return getExchangeProduct(genericProduct) || genericProduct; }); return getSubscribedFeeds({ auth: auth, logger: logger }, productIDs) .catch((err) => { if (logger) { logger.error(err); } else { console.error(err); } return null; }); } exports.FeedFactory = FeedFactory;