wechaty-token
Version:
Wechaty Token Based Authentication Manager
65 lines • 2.87 kB
JavaScript
;
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