1 | import express = require("express");
|
2 | import { Server } from "neweb-server";
|
3 | export interface IExpressHttpHandler {
|
4 | app: express.Express;
|
5 | server: Server;
|
6 | }
|
7 | class ExpressHttpHandler {
|
8 | constructor(protected config: IExpressHttpHandler) { }
|
9 | public handle: express.RequestHandler = async (req: express.Request, res: express.Response, next) => {
|
10 |
|
11 | const server = this.config.server;
|
12 | const response = await server.resolveRequest({
|
13 | url: req.url,
|
14 | sessionId: (req.session as Express.Session).id,
|
15 | headers: req.headers as any,
|
16 | });
|
17 | Object.keys(response.headers).map((key) => {
|
18 | res.header(key, response.headers[key]);
|
19 | });
|
20 | if (response.type === "NotFound") {
|
21 | next();
|
22 | return;
|
23 | }
|
24 | if (response.type === "Redirect") {
|
25 | res.status(301).send(response.body);
|
26 | return;
|
27 | }
|
28 | res.send(response.body);
|
29 | |
30 |
|
31 |
|
32 |
|
33 | }
|
34 | }
|
35 | export default ExpressHttpHandler;
|