tpbproxy/routes/transmission.js
2024-01-07 00:30:53 -05:00

90 lines
1.9 KiB
JavaScript

'use static';
const router = require('express').Router();
const {Torrent} = require('>/models');
router.get('/', async function(req, res, next){
try{
res.json({results: await Torrent.findAll({
where:{added_by: req.query.username || req.user.username},
limit: req.query.limit,
offset: req.query.offset,
order: [
['createdAt', 'DESC'],
],
})});
}catch(error){
next(error);
}
});
router.post("/", async function(req, res, next){
try{
res.json(await Torrent.create({...req.body, added_by: req.user.username}))
}catch(error){
next(error);
}
});
router.post("/:hashString", async function(req, res, next){
try{
res.json(await Torrent.migrate(req.params.hashString, req.user.username))
}catch(error){
next(error);
}
});
router.get('/server', async function(req, res, next){
try{
res.json(await Torrent.trClient.sessionStats())
}catch(error){
next(error);
}
});
router.get("/:hashString", async function(req, res, next){
try{
let torrent = await Torrent.findByPk(req.params.hashString);
if('latest' in req.query){
torrent = await torrent.getTorrentData();
}
res.json({result: torrent});
}catch(error){
next(error);
}
});
router.delete("/:hashString", async function(req, res, next){
try{
let torrent = await Torrent.findByPk(req.params.hashString);
res.json({result: torrent, activity: await torrent.destroy()});
}catch(error){
next(error);
}
});
router.post("/:hashString/stop", async function(req, res, next){
try{
let torrent = await Torrent.findByPk(req.params.hashString);
res.json({result: torrent, activity: await torrent.stop()});
}catch(error){
next(error);
}
});
router.post("/:hashString/start", async function(req, res, next){
try{
let torrent = await Torrent.findByPk(req.params.hashString);
res.json({result: torrent, activity: await torrent.start()});
}catch(error){
next(error);
}
});
module.exports = router;