homebridge-plugin-asus-vpn
Version:
A switch to on and off the vpn.
48 lines • 2.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsusVPNPlatform = void 0;
const platformAccessory_js_1 = require("./platformAccessory.js");
const settings_js_1 = require("./settings.js");
const service_1 = require("./adapter/service");
const usecase_1 = require("./domain/usecase");
class AsusVPNPlatform {
constructor(log, config, api) {
this.log = log;
this.config = config;
this.api = api;
this.accessories = [];
this.Service = api.hap.Service;
this.Characteristic = api.hap.Characteristic;
const { routerIp, loginAuthorizationToken, vpnConnectionName, vpnConnectionType, } = this.config;
this.routerIp = routerIp;
this.loginAuthorizationToken = loginAuthorizationToken;
this.vpnConnectionName = vpnConnectionName;
this.vpnConnectionType = vpnConnectionType;
this.log.debug('Finished initializing platform:', this.config.name);
this.api.on("didFinishLaunching", async () => {
log.debug('Executed didFinishLaunching callback');
await this.createAsusVPNService();
});
}
configureAccessory(accessory) {
this.accessories.push(accessory);
}
async createAsusVPNService() {
const asusRouterHttpService = new service_1.AsusRouterHttpService(this.routerIp, this.loginAuthorizationToken, this.vpnConnectionName, this.vpnConnectionType);
await asusRouterHttpService.login();
const asusRouterService = new service_1.AsusRouterService(asusRouterHttpService);
const asusRouterUsecase = new usecase_1.AsusRouterUsecase();
const existingAccessory = this.accessories[0];
if (existingAccessory) {
new platformAccessory_js_1.AsusVPNPlatformAccessory(this, existingAccessory, asusRouterService, asusRouterUsecase);
}
else {
const accessory = new this.api.platformAccessory(this.vpnConnectionName, 'da67df50-6f1d-46ec-9c1c-6acd91be4bef');
accessory.context.name = this.vpnConnectionName;
new platformAccessory_js_1.AsusVPNPlatformAccessory(this, accessory, asusRouterService, asusRouterUsecase);
this.api.registerPlatformAccessories(settings_js_1.PLUGIN_NAME, settings_js_1.PLATFORM_NAME, [accessory]);
}
}
}
exports.AsusVPNPlatform = AsusVPNPlatform;
//# sourceMappingURL=platform.js.map