@abcpros/bitcore-wallet-service
Version:
A service for Mutisig HD Bitcoin Wallets
130 lines • 4.68 kB
JavaScript
;
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