-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathapp.mjs
82 lines (69 loc) · 2.25 KB
/
app.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// @ts-check
/* Module dependencies.*/
import http from "http";
import path from "path";
import express from "express";
import bodyParser from "body-parser";
import errorhandler from "errorhandler";
import morgan from "morgan";
import serveFavicon from "serve-favicon";
import serveStatic from "serve-static";
import compression from "compression";
import { getStylifyJsonHandler } from "./src/get-stylify-json.mjs";
import { getPdfHandler } from "./src/get-pdf.mjs";
import { getRenderPdfViewHandler } from "./src/get-render-pdf-view.mjs";
import { getVersionHandler } from "./src/get-version.mjs";
import { validateReferer } from "./src/validateRefererMiddleware.mjs";
import { validateUrlParam } from "./src/validateUrlParam.mjs";
const app = express();
const dirPath = new URL(".", import.meta.url).pathname;
app.set("port", process.env.PORT || 5001);
app.use(compression());
app.use(morgan("short"));
app.set("views", dirPath + "/views");
app.set("view engine", "ejs");
app.use(serveFavicon(path.join(dirPath + "/public/favicon.ico")));
app.use(bodyParser.json());
app.use(serveStatic(path.join(dirPath, "public")));
app.use(errorhandler());
app.use((err, req, res, next) => {
console.error(err.stack);
res.send(
500,
"<h1>Something's gone wrong!</h1><p>Please try to refresh the page</p>"
);
});
/* Routes */
app.get("/", (req, res) => {
res.redirect(301, "http://stylifyme.com/");
});
app.get("/about", (req, res) => {
res.redirect(301, "http://stylifyme.com/about-us.html");
});
// renders html for PDF
app.get(
"/renderpdfview",
validateReferer,
validateUrlParam,
getRenderPdfViewHandler
);
// returns PDF file
app.get("/getpdf", validateReferer, validateUrlParam, getPdfHandler);
// returns stylify json
app.get("/query", validateReferer, validateUrlParam, getStylifyJsonHandler);
// returns browser version number
app.get("/version", getVersionHandler);
const server = http.createServer(app).listen(app.get("port"), () => {
console.log(
`http://localhost:${app.get("port")}/query?url=http://stylifyme.com`
);
console.log(`Express server listening on port ${app.get("port")}`);
if (process && process.send) {
process.send("ready");
}
});
process.on("SIGINT", () => {
server.close(function (err) {
process.exit(err ? 1 : 0);
});
});