test-sdk/ts/test-sdk.classes.testserver.ts
2020-07-25 16:34:10 +00:00

46 lines
1.1 KiB
TypeScript

import * as plugins from './test-sdk.plugins';
export class AgTestServer {
public handlers: Array<plugins.agSdk.AAgHandler<any>> = [];
public server: plugins.smartexpress.Server;
constructor(handlerArg?: plugins.agSdk.AAgHandler<any>) {
if (handlerArg) {
this.handlers.push(handlerArg);
}
}
public async addAgHandler(handlerArg: plugins.agSdk.AAgHandler<any>) {
this.handlers.push(handlerArg);
await this.stop();
await this.start();
}
public async start() {
this.server = new plugins.smartexpress.Server({
cors: true,
defaultAnswer: async () => 'apiglobal testserver',
domain: 'localhost',
port: 3000,
forceSsl: false,
});
for (const handlerArg of this.handlers) {
await handlerArg.start();
this.server.addRoute(
`/${handlerArg.slug}`,
new plugins.smartexpress.HandlerTypedRouter(handlerArg.typedrouter)
);
}
await this.server.start();
}
public async stop() {
if (this.server) {
const previousServer = this.server;
this.server = null;
await previousServer.startedPromise;
await previousServer.stop();
}
}
}