-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
61 lines (49 loc) · 1.75 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
const express = require("express");
const overwritesRouter = require("./routes/overwrites.js");
const sourcesRouter = require("./routes/sources.js");
const libraryRouter = require("./routes/library.js");
const Source = require("./models/Source.js");
const sourcesData = require("./data/sources.json");
console.log("Preparing to launch Express.js server");
const app = express();
let port = process.env.PORT;
if (port == null || port == "") {
port = 5000;
}
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.use(express.urlencoded({ extended: false }));
// "Middleware" to log every request
app.use(function(req, res, next) {
console.log(new Date() + " Request: " + req.url);
if (!isObjectEmpty(req.query)) {
console.log(" - Query: " + JSON.stringify(req.query));
}
if (!isObjectEmpty(req.params)) {
console.log(" - Params: " + JSON.stringify(req.params));
}
if (!isObjectEmpty(req.body)) {
console.log(" - Body: " + JSON.stringify(req.body));
}
next();
});
//WEB ROUTES
app.get("/", (req, res) => {
res.render("pages/home", {
"sourcesData": sourcesData
});
});
app.get("/about", (req, res) => {
res.render("pages/about");
});
// Routers for "mini-apps"
app.use("/sources", sourcesRouter);
app.use("/overwrites", overwritesRouter);
app.use("/library", libraryRouter);
app.listen(port, () => console.log("Express.js server is listening on port " + port));
// UTILS
function isObjectEmpty(obj) {
// https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
// We also have to check the constructor because Object.keys(new Date()).length === 0
return (obj == null || (Object.keys(obj).length === 0 && obj.constructor === Object));
}