-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
66 lines (53 loc) · 1.62 KB
/
app.js
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
"use strict";
// Import config
const {
runLoader,
getMust,
getEnvironmentOverview,
} = require("./src/config");
// Load config
runLoader();
// Import constants
const constant = require("./src/init/const");
// Import StatusCodes
const {StatusCodes} = require("http-status-codes");
// Import useApp
const {useApp} = require("./src/init/express");
// Initialize application
const app = useApp();
// Initialize prepare handlers
const {
prepare: prepareDatabase,
} = require("./src/init/database");
const prepareHandlers = [
prepareDatabase,
];
// Redirect / to INDEX_REDIRECT_URL
app.get("/", (_, res) => {
const redirectCode = getMust("INDEX_REDIRECT_TYPE") === "permanent" ?
StatusCodes.MOVED_PERMANENTLY :
StatusCodes.MOVED_TEMPORARILY;
const redirectUrl = getMust("INDEX_REDIRECT_URL");
res.redirect(redirectCode, redirectUrl);
});
// The handler for robots.txt (deny all friendly robots)
app.get("/robots.txt", (_, res) => {
res.type("txt").send("User-agent: *\nDisallow: /");
});
// Load router dispatcher
const routerDispatcher = require("./src/routes/index");
routerDispatcher.load();
// Show banner message
(() => {
const {APP_NAME: appName} = constant;
const {node, runtime} = getEnvironmentOverview();
const statusMessage = `(environment: ${node}, ${runtime})`;
console.info(appName, statusMessage, "\n====");
})();
// Mount application and execute it
require("./src/execute")(app, prepareHandlers,
({protocol, hostname, port}) => {
console.info(`Protocol "${protocol}" is listening at`);
console.info(`${protocol}://${hostname}:${port}`);
},
);