From 7f6bde6e53cf340fc9c134ce60047e4222524a2f Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Tue, 13 Sep 2022 15:14:07 -0700 Subject: [PATCH] IO-2028 LMS Deletion. --- jobs/jobsDeleteMedia.ts | 35 +++++++++++++++++++++++++++++++++++ server.ts | 6 ++++++ 2 files changed, 41 insertions(+) create mode 100644 jobs/jobsDeleteMedia.ts diff --git a/jobs/jobsDeleteMedia.ts b/jobs/jobsDeleteMedia.ts new file mode 100644 index 0000000..6d79969 --- /dev/null +++ b/jobs/jobsDeleteMedia.ts @@ -0,0 +1,35 @@ +import { Request, Response } from "express"; +import fs from "fs-extra"; +import path from "path"; +import { logger } from "../server"; +import GenerateThumbnail from "../util/generateThumbnail"; +import MediaFile from "../util/interfaces/MediaFile"; +import ListableChecker from "../util/listableChecker"; +import GenerateUrl from "../util/MediaUrlGen"; +import { PathToRoFolder } from "../util/pathGenerators"; +import { FolderPaths, JobRelativeFilePath } from "../util/serverInit"; +import ft from "file-type"; +import core from "file-type/core"; + +export async function JobsDeleteMedia(req: Request, res: Response) { + const jobid: string = (req.body.jobid || "").trim(); + const files: string[] = req.body.files || []; + await fs.ensureDir(PathToRoFolder(jobid)); + logger.debug("Deleteing media for job: " + PathToRoFolder(jobid)); + let ret: MediaFile[]; + try { + //We just uploaded files, we're going to send only those back. + await Promise.all( + files.map(async (filename) => { + const relativeFilePath: string = JobRelativeFilePath(jobid, filename); + + await fs.remove(relativeFilePath); + }) + ); + + if (!res.headersSent) res.sendStatus(200); + } catch (error) { + logger.error("Error deleting job media.", { jobid, error }); + if (!res.headersSent) res.status(500).json(error); + } +} diff --git a/server.ts b/server.ts index 56c5fad..1f8b087 100644 --- a/server.ts +++ b/server.ts @@ -22,6 +22,7 @@ import { } from "./bills/billsUploadMedia"; import ValidateImsToken from "./util/validateToken"; import { jobsDownloadMedia } from "./jobs/jobsDownloadMedia"; +import { JobsDeleteMedia } from "./jobs/jobsDeleteMedia"; dotenv.config({ path: resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`), @@ -141,6 +142,11 @@ app.post( ValidateImsToken, JobsMoveMedia ); +app.post( + "/jobs/delete", //JobRequestValidator, + ValidateImsToken, + JobsDeleteMedia +); app.post("/bills/list", BillRequestValidator, BillsListMedia); app.post(