-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApp.js
More file actions
54 lines (46 loc) · 1.39 KB
/
App.js
File metadata and controls
54 lines (46 loc) · 1.39 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
const express = require("express");
const app = express();
const apiRoutes = require("./routes/Route.js");
const morgan = require("morgan");
const mongoose = require("mongoose");
const cors = require("cors");
const Log = require("./models/log");
const rateLimit = require("express-rate-limit");
//middlewares
app.use(morgan("dev"));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
const limiter = rateLimit({
windowMs: 1000,
max: 2,
message: "Too many request in created, please wait for some time",
});
app.use(limiter);
app.use(cors());
app.use((req,res,next)=>{
console.log(req.headers.referer || req.headers.referrer);
next();
})
app.use("/api", apiRoutes);
app.get("/logStream", async (req, res) => {
res.setHeader("Content-Type", "text/event-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Connection", "keep-alive");
res.setHeader("Access-Control-Allow-Origin", "*");
res.flushHeaders();
Log.watch().on("change", async (change) => {
const logChange = { ...change["fullDocument"] };
const newLog = new Log(logChange);
await newLog.populate("creator", "username color");
if(newLog['creator']['color']==undefined)
newLog['creator']['color']='purple';
res.write(`data: ${JSON.stringify(newLog)}\n\n`);
});
});
module.exports = app;
// if(allLogs){
// console.log('true');
// }
// else{
// console.log('false');
// }