UNPKG

@beenotung/tslib

Version:
74 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.externalAPI = void 0; const tslib_1 = require("tslib"); /** * external API powered by surge.sh */ const defer_1 = require("./async/defer"); var externalAPI; (function (externalAPI) { const hostListUrl = 'http://host-list.surge.sh/list'; /** * @example line : 192.168.1.2:8181 freedom-coin-server * */ function getHostList() { return tslib_1.__awaiter(this, void 0, void 0, function* () { const text = yield fetch(hostListUrl).then(x => x.text()); return text .split('\n') .filter(x => x.length !== 0) .map(line => { const record = {}; let xs = line.split(' '); record.name = xs[1]; xs = xs[0].split(':'); if (xs.length === 2) { record.port = Number(xs[1]); } record.ip = xs[0]; return record; }); }); } externalAPI.getHostList = getHostList; function getHostByName(name) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const text = yield fetch(hostListUrl).then(x => x.text()); /* not using `getHostList().filter()` for speed */ let found; const defer = defer_1.createDefer(); try { text .split('\n') .filter(x => x.length !== 0) .forEach(line => { let xs = line.split(' '); if (xs[1] === name) { const name = xs[1]; let port; xs = xs[0].split(':'); if (xs.length === 2) { port = Number(xs[1]); } const ip = xs[0]; found = { name, ip, port }; throw new Error('found'); } }); defer.reject(`no host record named '${name}'`); } catch (e) { if (found) { defer.resolve(found); } else { defer.reject(e); } } return defer.promise; }); } externalAPI.getHostByName = getHostByName; })(externalAPI = exports.externalAPI || (exports.externalAPI = {})); //# sourceMappingURL=externAPI.js.map