continued dep injectiong

This commit is contained in:
subnub
2024-07-02 15:10:03 -04:00
parent 09cb81f96d
commit 7bd81a9aa5
16 changed files with 413 additions and 336 deletions
+92 -15
View File
@@ -9,6 +9,7 @@ import {
removeStreamVideoCookie,
} from "../cookies/createCookies";
import ChunkService from "../services/ChunkService";
import streamToBuffer from "../utils/streamToBuffer";
const fileService = new FileService();
@@ -30,10 +31,8 @@ interface RequestType extends Request {
encryptedToken?: string;
}
type ChunkServiceType = FileSystemService | S3Service;
class FileController {
chunkService: ChunkServiceType;
chunkService;
constructor() {
this.chunkService = new ChunkService();
@@ -43,19 +42,43 @@ class FileController {
if (!req.user) {
return;
}
let responseSent = false;
try {
const user = req.user;
const id = req.params.id;
const decryptedThumbnail = await this.chunkService.getThumbnail(user, id);
const { readStream, decipher } = await this.chunkService.getThumbnail(
user,
id
);
res.send(decryptedThumbnail);
readStream.on("error", (e: Error) => {
console.log("Get thumbnail read stream error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error getting thumbnail");
}
});
decipher.on("error", (e: Error) => {
console.log("Get thumbnail decipher error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error getting thumbnail");
}
});
const bufferData = await streamToBuffer(readStream.pipe(decipher));
res.send(bufferData);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Thumbnail Error File Route:", e.message);
}
res.status(500).send("Server error getting thumbnail");
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error getting thumbnail");
}
}
};
@@ -63,12 +86,38 @@ class FileController {
if (!req.user) {
return;
}
let responseSent = false;
try {
const user = req.user;
const fileID = req.params.id;
await this.chunkService.getFullThumbnail(user, fileID, res);
const { decipher, readStream, file } =
await this.chunkService.getFullThumbnail(user, fileID);
readStream.on("error", (e: Error) => {
console.log("Get full thumbnail read stream error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error getting full thumbnail");
}
});
decipher.on("error", (e: Error) => {
console.log("Get full thumbnail decipher error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error gettingfull thumbnail");
}
});
res.set("Content-Type", "binary/octet-stream");
res.set(
"Content-Disposition",
'attachment; filename="' + file.filename + '"'
);
res.set("Content-Length", file.metadata.size.toString());
readStream.pipe(decipher).pipe(res);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Thumbnail Full Error File Route:", e.message);
@@ -379,18 +428,46 @@ class FileController {
if (!req.user) {
return;
}
let responseSent = false;
try {
const user = req.user;
const fileID = req.params.id;
await this.chunkService.downloadFile(user, fileID, res);
const { readStream, decipher, file } =
await this.chunkService.downloadFile(user, fileID, res);
readStream.on("error", (e: Error) => {
console.log("read stream error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error downloading file");
}
});
decipher.on("error", (e: Error) => {
console.log("decipher stream error", e);
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error downloading file");
}
});
res.set("Content-Type", "binary/octet-stream");
res.set(
"Content-Disposition",
'attachment; filename="' + file.filename + '"'
);
res.set("Content-Length", file.metadata.size.toString());
readStream.pipe(decipher).pipe(res);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDownload File Error File Route:", e.message);
}
res.status(500).send("Server error downloading file");
if (!responseSent) {
responseSent = true;
res.status(500).send("Server error downloading file");
}
}
};
@@ -586,7 +663,7 @@ class FileController {
const userID = req.user._id;
const items = req.body.items;
await this.chunkService.trashMulti(userID, items);
await fileService.trashMulti(userID, items);
res.send();
} catch (e: unknown) {
@@ -607,7 +684,7 @@ class FileController {
const userID = req.user._id;
const items = req.body.items;
await this.chunkService.restoreMulti(userID, items);
await fileService.restoreMulti(userID, items);
res.send();
} catch (e: unknown) {