Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
71 lines (59 loc) · 2.19 KB
/
Copy pathserver.js
File metadata and controls
71 lines (59 loc) · 2.19 KB
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
import express from "express";
import dotenv from "dotenv";
import cors from "cors";
import config from "./src/utils/Config.js";
import cookieParser from "cookie-parser";
import compression from "compression";
import dns from "dns";
// Import Routers
import v1AccountRouter from "./src/routes/accountRouter.js";
import v1AuthenticationRouter from "./src/routes/authenticationRouter.js";
import v1CardRouter from "./src/routes/cardRouter.js";
import v1IPWP_TR_Device_Router from "./src/routes/ipwpDeviceRouter.js";
import v1IPWP_TR_LocateDevice_Router from "./src/routes/ipwpDeviceLocateRouter.js";
import v1MapRouteRouter from "./src/routes/mapRouteRouter.js";
import v1WalletRouter from "./src/routes/walletRouter.js";
import v1MobileApiRouter from "./src/routes/apiRouter.js";
// Import Database
import database from "./src/database/MongoDB.js";
// import middlewares
import {
authenticateAdmin,
authenticateAPIKeys,
authenticateOperator,
authenticateUser,
} from "./src/middlewares/authMiddleware.js";
dotenv.config();
const app = express();
const port = config.PORT;
app.use(
cors({
origin: config.CORS_ORIGIN,
methods: ["GET", "POST", "PUT", "DELETE"],
allowedHeaders: ["Content-Type", "Authorization"],
}),
);
// setup app [middlewares]
app.use(cookieParser()); // allow node to read cookies
app.use(express.json()); // use JSON as payload
app.use(compression()); // compress all routes
// Routers
app.use("/api/v1/account", v1AccountRouter);
app.use("/api/v1/auth", v1AuthenticationRouter);
app.use("/api/v1/card", authenticateAdmin, v1CardRouter);
app.use("/api/v1/device", authenticateOperator, v1IPWP_TR_Device_Router);
app.use("/api/v1/tracker", authenticateUser, v1IPWP_TR_LocateDevice_Router);
app.use("/api/v1/route", authenticateAdmin, v1MapRouteRouter);
app.use("/api/v1/wallet", authenticateUser, v1WalletRouter);
// api routers
app.use("/api/v1/public", authenticateAPIKeys, v1MobileApiRouter);
// set dns for mongodb
dns.setServers(["1.1.1.1", "8.8.8.8"]);
// run database
database();
const server = app.listen(port, () => {
console.log(`Server is now running: http://localhost:${port}`);
});
server.keepAliveTimeout = 120 * 1000;
server.headersTimeout = 120 * 1000;
export default app;