test-sdk/ts/test-sdk.classes.testserver.ts

46 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

2020-07-05 17:53:49 +00:00
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',
2020-07-25 15:47:34 +00:00
port: 3000,
2020-07-05 17:53:49 +00:00
forceSsl: false,
});
for (const handlerArg of this.handlers) {
2020-07-25 16:34:10 +00:00
await handlerArg.start();
2020-07-05 17:53:49 +00:00
this.server.addRoute(
`/${handlerArg.slug}`,
new plugins.smartexpress.HandlerTypedRouter(handlerArg.typedrouter)
);
}
2020-07-05 23:31:26 +00:00
await this.server.start();
2020-07-05 17:53:49 +00:00
}
public async stop() {
if (this.server) {
const previousServer = this.server;
this.server = null;
2020-07-05 23:35:55 +00:00
await previousServer.startedPromise;
await previousServer.stop();
2020-07-05 17:53:49 +00:00
}
}
}