const { createId } = require('@paralleldrive/cuid2'); const { getTmpFilePath } = require('../utils/paths.js'); const fsp = require('fs/promises'); module.exports.createTask = function createTask (req, res) { const url = req.body.url const task = { id: createId(), url: url, filePath: getTmpFilePath(url), fileSize: null, createdAt: new Date().toISOString(), cid: null, downloadProgress: null, addProgress: null } if (!req?.body?.url) return res.status(400).json({ error: true, message: 'request body was missing a url' }); req.store.tasks[task.id] = task; req.queue.push(task, function (err, result) { if (err) throw err; console.log('the following is the result of the queued task being complete') console.log(result) }) return res.json({ error: false, data: task }) } module.exports.readTask = function readTask (req, res) { const id = req?.query?.id // If we get an id in the query, show the one task. // Otherwise, we show all tasks. if (!!id) { const task = req.store.tasks[id] if (!task) return res.json({ error: true, message: 'there was no task in the store with that id' }); return res.json({ error: false, data: task }) } else { const tasks = req.store.tasks return res.json({ error: false, data: tasks }) } } module.exports.deleteTask = async function deleteTask (req, res) { const id = req?.query?.id; const task = req.store.tasks[id]; try { if (task?.filePath) await fsp.unlink(task.filePath); } catch (err) {} delete req.store.tasks[id]; return res.json({ error: false, message: 'task deleted' }); if (err) return res.json({ error: true, message: err }); }