UNPKG

@abcpros/bitcore-wallet-service

Version:
130 lines 4.68 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CurrencyRateService = void 0; var async = __importStar(require("async")); var lodash_1 = __importDefault(require("lodash")); var request = __importStar(require("request")); var storage_1 = require("./storage"); var config = require('../config'); var $ = require('preconditions').singleton(); var Common = require('./common'); var Defaults = Common.Defaults; var Constants = Common.Constants; var logger_1 = __importDefault(require("./logger")); var CurrencyRateService = (function () { function CurrencyRateService() { this.apiKey = ''; } CurrencyRateService.prototype.init = function (opts, cb) { var _this = this; opts = opts || {}; this.request = opts.request || request; this.apiKey = opts.apiKey || opts.currencyRateServiceOpts.apiKey; this.apiUrl = opts.apiUrl || opts.currencyRateServiceOpts.apiUrl; async.parallel([ function (done) { if (opts.storage) { _this.storage = opts.storage; done(); } else { _this.storage = new storage_1.Storage(); _this.storage.connect(opts.storageOpts, done); } } ], function (err) { if (err) { logger_1.default.error(err); } return cb(err); }); }; CurrencyRateService.prototype.startCron = function (opts, cb) { var _this = this; opts = opts || {}; var interval = opts.currencyRateServiceOpts.fetchInterval || Defaults.FIAT_RATE_FETCH_INTERVAL; if (interval) { this._fetch(); setInterval(function () { _this._fetch(); }, interval * 60 * 1000); } return cb(); }; CurrencyRateService.prototype._fetch = function (cb) { var _this = this; cb = cb || function () { }; this._retrieve(function (err, res) { if (err) { logger_1.default.warn('Error retrieving data', err); } if (!!res && res.length > 0) { _this.storage.storeCurrencyRate(res, function (err) { if (err) { logger_1.default.warn('Error storing data', err); } }); } }); }; CurrencyRateService.prototype._retrieve = function (cb) { var _this = this; logger_1.default.debug('Fetching data for currency rate '); var params = { apikey: this.apiKey }; this.request.get({ url: this.apiUrl, qs: params, useQuerystring: true, json: true }, function (err, res, body) { if (err || !body) { return cb(err); } logger_1.default.debug('Data for currency rate fetched successfully'); try { var rates = _this.convertRates(body.data); return cb(null, rates); } catch (e) { return cb(e); } }); }; CurrencyRateService.prototype.convertRates = function (raw) { return lodash_1.default.compact(Object.keys(raw).map(function (key) { if (!raw[key]) return null; return { code: key, value: +raw[key].value }; })); }; return CurrencyRateService; }()); exports.CurrencyRateService = CurrencyRateService; //# sourceMappingURL=currencyrate.js.map