giveth-bridge
Version:
Mainnet -> sidechain Giveth Bridge.
48 lines (34 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _requestPromise = require('request-promise');
var _requestPromise2 = _interopRequireDefault(_requestPromise);
var _web = require('web3');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var FIVE_MINUTES = 1000 * 60 * 5;
var lastChecked = Date.now() - FIVE_MINUTES - 1;
var lastPrice = 1000000000;
var queryGasStation = function queryGasStation() {
if (Date.now() > lastChecked + FIVE_MINUTES) {
return (0, _requestPromise2.default)('https://ethgasstation.info/json/ethgasAPI.json').then(function (resp) {
var _JSON$parse = JSON.parse(resp),
average = _JSON$parse.average;
lastPrice = _web.utils.toWei('' + average / 10, 'gwei'); // response in gwei * 10
lastChecked = Date.now();
return lastPrice;
}).catch(function (e) {
console.error('could not fetch gas from ethgasstation', e);
return lastPrice;
});
}
return Promise.resolve(lastPrice);
};
exports.default = function (config) {
var homeNetwork = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var gasPrice = homeNetwork ? config.homeGasPrice : config.foreignGasPrice;
if (gasPrice === 'ethGasStation') {
return queryGasStation();
}
return Promise.resolve(gasPrice);
};