platformclient/ts/classes.platformclient.ts

46 lines
1.7 KiB
TypeScript

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;
}
}