-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.js
62 lines (51 loc) · 1.67 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
require("dotenv").config();
const express = require("express");
const fileRoutes = require("./routes/file.routes");
const helmet = require("helmet");
const { version } = require("./config/version.config");
const app = express();
const port = process.env.PORT;
const hosterEmail = process.env.HOSTER_EMAIL;
app.set("view engine", "ejs");
app.use(fileRoutes);
app.use(helmet());
const s3 = require("./engines/s3.engine");
const local = require("./engines/local.engine");
const storageMode = process.env.STORAGE_MODE || "local";
// Todo: refactor this way.
const fileNameLength = parseInt(process.env.FILE_NAME_LENGTH, 10) || 10;
const multerOptions = {
limits: parseInt(process.env.FILE_MAX_SIZE_MB, 10) * 1024 * 1024,
};
app.get("/", async (req, res) => {
let storageEngine;
if (storageMode === "local") {
storageEngine = local(
multerOptions,
fileNameLength,
process.env.LOCAL_UPLOAD_PATH,
);
} else if (storageMode === "s3") {
const s3Config = {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION,
bucketName: process.env.S3_BUCKET_NAME,
endpoint: process.env.S3_ENDPOINT,
};
storageEngine = s3(multerOptions, fileNameLength, s3Config);
} else {
throw new Error("Invalid STORAGE_MODE");
}
const { totalUploads, totalSize } = await storageEngine.gatherStatistics();
const kbToMB = totalSize / 1024 / 1024;
res.render("index", {
totalUploads: totalUploads,
totalSize: kbToMB.toFixed(2),
hosterEmail: hosterEmail,
version: version,
});
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});