-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
83 lines (62 loc) · 2.22 KB
/
index.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const express = require('express');
const multer = require('multer');
const mongoose = require('mongoose');
const cookieParser = require('cookie-parser');
const { s3Uploadv2 } = require('./services/s3Service');
const userRoute = require('./routes/user');
const { checkForAuthCookie } = require('./middlewares/authentication');
const ShortUrl = require('./models/shortUrl');
const app = express();
const PORT = process.env.PORT || 3000;
app.set('view engine', 'ejs');
app.use(express.urlencoded({ extended: false }));
app.use(express.static('public'));
app.use(cookieParser());
app.use(checkForAuthCookie("token"));
mongoose.connect(process.env.MONGO_URI);
app.get("/", (req, res) => {
res.render("home");
});
app.get("/d/:shortUrl", async (req, res) => {
const shortUrl = await ShortUrl.findOne({ short: req.params.shortUrl });
if (shortUrl == null) return res.redirect("/upload");
res.redirect(shortUrl.full);
});
app.use("/user", userRoute);
// setting up multer middleware
const storage = multer.memoryStorage();
const upload = multer({ storage: storage, limits: { fileSize: 50000000, files: 1 } });
app.get("/upload", async (req, res) => {
const shortUrls = await ShortUrl.find({ createdBy: req.user._id });
if (shortUrls.length > 0) {
return res.render("home", { user: req.user, shortUrls });
}
res.render("home", { user: req.user });
});
app.post("/upload", upload.single("file"), async (req, res) => {
// console.log(req.file)
const fileName = req.file.originalname;
const result = await s3Uploadv2(req.file);
// console.log(result)
const objectUrl = result.Location;
await ShortUrl.create({
full: objectUrl,
fileName,
createdBy: req.user._id
});
res.redirect("/upload");
});
// Error Handling
app.use((error, req, res, next) => {
if (error instanceof multer.MulterError) {
if (error.code === "LIMIT_FILE_SIZE") {
res.render("home", { user: req.user, error: "File is too large" });
}
if (error.code === "LIMIT_UNEXPECTED_FILE") {
res.render("home", { user: req.user, error: "Unexpected file" });
}
}
});
app.listen(PORT, () => {
console.log(`Server started at Port: ${PORT}`);
});