UNPKG

agora-rest-client

Version:
36 lines (35 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bestDomain = void 0; const promises_1 = require("dns/promises"); const log_1 = require("../log"); const utils_1 = require("../utils"); const types_1 = require("../types"); const logger = (0, log_1.getLogger)('RequestClient'); function bestDomain(domains, regionPrefix) { return new Promise((resolve, reject) => { let failCounter = 0; let domain; const resolver = new promises_1.Resolver({ timeout: 2000 }); for (let i = 0; i < domains.length; i++) { const promise = resolver.resolve4(`${regionPrefix}.${domains[i]}`); promise .then((result) => { if (!domain) { domain = domains[i]; resolve(domain); } }) .catch((e) => { logger.error(`resolve "${domains[i]}" failed: ${e.code}`); failCounter++; }) .finally(() => { if (failCounter === domains.length) { reject(utils_1.GenericError.wrapMessage(utils_1.ERR_NAMESPACE_LIB, types_1.ErrorTypeEnum.RequestDNSError, 'DnsError', 'all dns failed')); } }); } }); } exports.bestDomain = bestDomain;