import { SzEmailConnector } from './email/classes.emailconnector.js'; import { SzSmsConnector } from './email/classes.smsconnector.js'; import { SzPushNotificationConnector } from './email/classes.pushnotificationconnector.js'; import { SzLetterConnector } from './email/classes.letterconnector.js'; import * as plugins from './plugins.js'; export class SzPlatformClient { public debugMode = false; private authorizationString: string; public typedrouter = new plugins.typedrequest.TypedRouter(); public typedsocket: plugins.typedsocket.TypedSocket; private qenvInstance = new plugins.qenv.Qenv(); public emailConnector = new SzEmailConnector(this); public smsConnector = new SzSmsConnector(this); public pushNotificationConnector = new SzPushNotificationConnector(this); public letterConnector = new SzLetterConnector(this); constructor(authorizationStringArg?: string) { this.authorizationString = authorizationStringArg; } public async init(authorizationStringArg?: string) { if (authorizationStringArg) { this.authorizationString = authorizationStringArg; } if (!this.authorizationString) this.authorizationString = process.env.SERVEZONE_PLATFROM_AUTHORIZATION; if (!this.authorizationString) throw new Error('authorizationString is required'); if (this.authorizationString === 'test') { this.debugMode = true; console.log('debug mode activated.'); return; } this.typedsocket = await plugins.typedsocket.TypedSocket.createClient( this.typedrouter, await this.getConnectionAddress() ); } private async getConnectionAddress() { const connectionAddress = await this.qenvInstance.getEnvVarOnDemand('SERVEZONE_API_DOMAIN'); return connectionAddress; } }