UNPKG

wechaty-token

Version:

Wechaty Token Based Authentication Manager

65 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WechatyResolver = void 0; const config_js_1 = require("./config.js"); const grpc_js_js_1 = require("./grpc-js.js"); const wechaty_token_js_1 = require("./wechaty-token.js"); class WechatyResolver { target; listener; channelOptions; addresses; static getDefaultAuthority(target) { config_js_1.log.verbose('ResolverWechaty', 'getDefaultAuthority(%s)', JSON.stringify(target)); return target.authority || config_js_1.DEFAULT_AUTHORITY; } static setup() { config_js_1.log.verbose('ResolverWechaty', 'setup()'); grpc_js_js_1.resolverManager.registerResolver('wechaty', WechatyResolver); } constructor(target, listener, channelOptions) { this.target = target; this.listener = listener; this.channelOptions = channelOptions; config_js_1.log.verbose('WechatyResolver', 'constructor("%s",)', JSON.stringify(target)); config_js_1.log.silly('WechatyResolver', 'constructor(,,"%s")', JSON.stringify(channelOptions)); this.addresses = []; } reportResolutionError(reason) { this.listener.onError({ code: grpc_js_js_1.GrpcStatus.UNAVAILABLE, details: `Wechaty service discovery / resolution failed for target ${(0, grpc_js_js_1.uriToString)(this.target)}: ${reason}`, metadata: new grpc_js_js_1.Metadata(), }); } async updateResolution() { config_js_1.log.verbose('ResolverWechaty', 'updateResolution()'); let address; try { address = await new wechaty_token_js_1.WechatyToken({ authority: this.target.authority, token: this.target.path, // `__token__` in `wechaty://api.chatie.io/__token__` }).discover(); } catch (e) { config_js_1.log.warn('WechatyResolver', 'updateResolution() wechatyToken.discover() error for target ' + (0, grpc_js_js_1.uriToString)(this.target) + ' due to error ' + e.message); console.error(e); this.reportResolutionError(e.message); } if (!address || !address.port) { config_js_1.log.warn('ResolverWechaty', 'updateResolution() address not found target ' + (0, grpc_js_js_1.uriToString)(this.target) + ': token does not exist'); this.reportResolutionError(`token "${this.target.path}" does not exist`); return; } this.addresses = [address]; /** * See: grpc-js/src/resolver-uds.ts */ process.nextTick(this.listener.onSuccessfulResolution, this.addresses, null, null, null, {}); } destroy() { config_js_1.log.verbose('ResolverWechaty', 'destroy()'); } } exports.WechatyResolver = WechatyResolver; //# sourceMappingURL=resolver-wechaty.js.map