Using Download Route MVC Model

This commit is contained in:
MasterAcnolo
2025-11-15 23:34:20 +01:00
parent cff3101b03
commit 91703d6a91

View File

@@ -1,40 +1,10 @@
const express = require("express"); const express = require("express");
const router = express.Router(); const router = express.Router();
const { fetchDownload } = require("../services/download.services"); const { downloadController, progressController } = require("../controller/download.controller");
const listeners = []; router.post("/", downloadController);
router.post("/", async (req, res) => { // SSE pour la progression du téléchargement
const options = { router.get("/progress", progressController);
url: req.body.url,
audioOnly: req.body.audioOnly === "1",
quality: req.body.quality || "best",
outputFolder: req.body.savePath || null
};
try {
await fetchDownload(options, listeners);
res.send(`✅ Téléchargement terminé`);
} catch (err) {
res.status(500).send(`${err.message}`);
}
});
// SSE pour la barre de progression
router.get("/progress", (req, res) => {
res.set({
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
});
const sendProgress = percent => res.write(`data: ${percent}\n\n`);
listeners.push(sendProgress);
req.on("close", () => {
listeners.splice(listeners.indexOf(sendProgress), 1);
res.end();
});
});
module.exports = router; module.exports = router;