UNPKG

@digitalbits-blockchain/xdb-digitalbits-sdk

Version:

@digitalbits-blockchain/xdb-digitalbits-sdk is a library for working with the DigitalBits Frontier server.

44 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCurrentServerTime = exports.SERVER_TIME_MAP = void 0; var tslib_1 = require("tslib"); var axios_1 = tslib_1.__importDefault(require("axios")); var urijs_1 = tslib_1.__importDefault(require("urijs")); var version = require("../package.json").version; exports.SERVER_TIME_MAP = {}; var FrontierAxiosClient = axios_1.default.create({ headers: { "X-Client-Name": "xdb-digitalbits-sdk", "X-Client-Version": version, }, }); function _toSeconds(ms) { return Math.floor(ms / 1000); } FrontierAxiosClient.interceptors.response.use(function interceptorFrontierResponse(response) { var hostname = urijs_1.default(response.config.url).hostname(); var serverTime = _toSeconds(Date.parse(response.headers.date)); var localTimeRecorded = _toSeconds(new Date().getTime()); if (!isNaN(serverTime)) { exports.SERVER_TIME_MAP[hostname] = { serverTime: serverTime, localTimeRecorded: localTimeRecorded, }; } return response; }); exports.default = FrontierAxiosClient; function getCurrentServerTime(hostname) { var entry = exports.SERVER_TIME_MAP[hostname]; if (!entry || !entry.localTimeRecorded || !entry.serverTime) { return null; } var serverTime = entry.serverTime, localTimeRecorded = entry.localTimeRecorded; var currentTime = _toSeconds(new Date().getTime()); if (currentTime - localTimeRecorded > 60 * 5) { return null; } return currentTime - localTimeRecorded + serverTime; } exports.getCurrentServerTime = getCurrentServerTime; //# sourceMappingURL=frontier_axios_client.js.map