60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
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 });
|
|
}
|
|
|
|
|