UNPKG

@bpanel/price

Version:

Fetch BTC-fiat exchange rate and add to app store.

524 lines (439 loc) 16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.feeds = undefined; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var curl = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(url) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return curlClient.get(url.host + '?path=' + url.path); case 3: return _context.abrupt('return', _context.sent); case 6: _context.prev = 6; _context.t0 = _context['catch'](0); console.log('Error fetching JSON API: ', _context.t0); return _context.abrupt('return', {}); case 10: case 'end': return _context.stop(); } } }, _callee, this, [[0, 6]]); })); return function curl(_x) { return _ref.apply(this, arguments); }; }(); /* * Add any exchange API you want here * Name of feed is object key, value is object with 2 functions * getPrice takes 3-letter acronym strings {fiat, crypto} and retuns a float * getFiats takes no arguments and returns an array of 3-letter fiat currencies */ var _bcurl = require('bcurl'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // determine the port and ssl usage var protocol = window.location.protocol; /* eslint-disable no-console */ var hostname = window.location.hostname; var port = window.location.port; var ssl = false; // use https and http ports when the window doesn't render them if (port === '') protocol === 'https:' ? port = '443' : port = '80'; if (protocol === 'https:') ssl = true; var curlClient = new _bcurl.Client({ port: parseInt(port, 10), path: '/curl/', host: hostname, ssl: ssl }); var feeds = exports.feeds = { Coinbase: { getPrice: function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(_ref3) { var fiat = _ref3.fiat, crypto = _ref3.crypto; var path, url, result; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: path = 'products/' + crypto + '-' + fiat + '/ticker'; url = { host: 'api.pro.coinbase.com', path: path }; _context2.next = 4; return curl(url); case 4: result = _context2.sent; return _context2.abrupt('return', result.price); case 6: case 'end': return _context2.stop(); } } }, _callee2, undefined); })); return function getPrice(_x2) { return _ref2.apply(this, arguments); }; }(), getFiats: function () { var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { var url, result, fiats, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: url = { host: 'api.pro.coinbase.com', path: 'currencies' }; _context3.next = 3; return curl(url); case 3: result = _context3.sent; fiats = []; _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context3.prev = 8; for (_iterator = (0, _getIterator3.default)(result); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { item = _step.value; if (item.details.type === 'fiat') fiats.push(item.id); } _context3.next = 16; break; case 12: _context3.prev = 12; _context3.t0 = _context3['catch'](8); _didIteratorError = true; _iteratorError = _context3.t0; case 16: _context3.prev = 16; _context3.prev = 17; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 19: _context3.prev = 19; if (!_didIteratorError) { _context3.next = 22; break; } throw _iteratorError; case 22: return _context3.finish(19); case 23: return _context3.finish(16); case 24: return _context3.abrupt('return', fiats); case 25: case 'end': return _context3.stop(); } } }, _callee3, undefined, [[8, 12, 16, 24], [17,, 19, 23]]); })); return function getFiats() { return _ref4.apply(this, arguments); }; }() }, Blockchain_info: { getPrice: function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_ref6) { var fiat = _ref6.fiat, crypto = _ref6.crypto; var path, url, result, price; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!(crypto !== 'BTC')) { _context4.next = 2; break; } return _context4.abrupt('return', 0); case 2: path = 'ticker'; url = { host: 'blockchain.info', path: path }; _context4.next = 6; return curl(url); case 6: result = _context4.sent; price = result[fiat].last; return _context4.abrupt('return', price); case 9: case 'end': return _context4.stop(); } } }, _callee4, undefined); })); return function getPrice(_x3) { return _ref5.apply(this, arguments); }; }(), getFiats: function () { var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() { var path, url, result, fiats; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: path = 'ticker'; url = { host: 'blockchain.info', path: path }; _context5.next = 4; return curl(url); case 4: result = _context5.sent; fiats = (0, _keys2.default)(result); return _context5.abrupt('return', fiats); case 7: case 'end': return _context5.stop(); } } }, _callee5, undefined); })); return function getFiats() { return _ref7.apply(this, arguments); }; }() }, Bitfinex: { getPrice: function () { var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(_ref9) { var fiat = _ref9.fiat, crypto = _ref9.crypto; var path, url, result; return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: if (!(crypto !== 'BTC')) { _context6.next = 2; break; } return _context6.abrupt('return', 0); case 2: path = 'v1/pubticker/' + crypto + fiat; url = { host: 'api.bitfinex.com', path: path }; _context6.next = 6; return curl(url); case 6: result = _context6.sent; return _context6.abrupt('return', result.last_price); case 8: case 'end': return _context6.stop(); } } }, _callee6, undefined); })); return function getPrice(_x4) { return _ref8.apply(this, arguments); }; }(), getFiats: function () { var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7() { return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: return _context7.abrupt('return', _promise2.default.resolve(['USD', 'EUR', 'GBP', 'JPY'])); case 1: case 'end': return _context7.stop(); } } }, _callee7, undefined); })); return function getFiats() { return _ref10.apply(this, arguments); }; }() }, Bitstamp: { getPrice: function () { var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(_ref12) { var fiat = _ref12.fiat, crypto = _ref12.crypto; var path, url, result; return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: path = 'api/v2/ticker/' + crypto + fiat; url = { host: 'www.bitstamp.net', path: path }; _context8.next = 4; return curl(url); case 4: result = _context8.sent; return _context8.abrupt('return', result.last); case 6: case 'end': return _context8.stop(); } } }, _callee8, undefined); })); return function getPrice(_x5) { return _ref11.apply(this, arguments); }; }(), getFiats: function () { var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() { return _regenerator2.default.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: return _context9.abrupt('return', _promise2.default.resolve(['USD', 'EUR'])); case 1: case 'end': return _context9.stop(); } } }, _callee9, undefined); })); return function getFiats() { return _ref13.apply(this, arguments); }; }() }, Kraken: { getPrice: function () { var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(_ref15) { var fiat = _ref15.fiat, crypto = _ref15.crypto; var path, url, response, result, randomUselessString, actualUsefulInfo; return _regenerator2.default.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { case 0: // seriously!? Ok... crypto = crypto === 'BTC' ? 'XBT' : crypto; path = '0/public/Ticker?pair=' + crypto + fiat; url = { host: 'api.kraken.com', path: path }; _context10.next = 5; return curl(url); case 5: response = _context10.sent; result = response.result; // Ah geez REALLY? randomUselessString = (0, _keys2.default)(result)[0]; actualUsefulInfo = result[randomUselessString]; return _context10.abrupt('return', actualUsefulInfo.c[0]); case 10: case 'end': return _context10.stop(); } } }, _callee10, undefined); })); return function getPrice(_x6) { return _ref14.apply(this, arguments); }; }(), getFiats: function () { var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() { return _regenerator2.default.wrap(function _callee11$(_context11) { while (1) { switch (_context11.prev = _context11.next) { case 0: return _context11.abrupt('return', _promise2.default.resolve(['USD', 'EUR', 'CAD', 'JPY'])); case 1: case 'end': return _context11.stop(); } } }, _callee11, undefined); })); return function getFiats() { return _ref16.apply(this, arguments); }; }() }, Cex_io: { getPrice: function () { var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(_ref18) { var fiat = _ref18.fiat, crypto = _ref18.crypto; var path, url, result; return _regenerator2.default.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: path = 'api/ticker/' + crypto + '/' + fiat; url = { host: 'cex.io', path: path }; _context12.next = 4; return curl(url); case 4: result = _context12.sent; return _context12.abrupt('return', result.last); case 6: case 'end': return _context12.stop(); } } }, _callee12, undefined); })); return function getPrice(_x7) { return _ref17.apply(this, arguments); }; }(), getFiats: function () { var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13() { return _regenerator2.default.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { case 0: return _context13.abrupt('return', _promise2.default.resolve(['USD', 'EUR', 'GBP', 'RUB'])); case 1: case 'end': return _context13.stop(); } } }, _callee13, undefined); })); return function getFiats() { return _ref19.apply(this, arguments); }; }() } };