From b3763f3b85e4dbb4c9ac59be0d5f5306e1254a28 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Sun, 2 Apr 2017 12:16:51 +0800 Subject: [PATCH] add torrent server routes and function --- .../controllers/torrents.server.controller.js | 129 +++++++++++++++++- .../server/routes/torrents.server.routes.js | 10 ++ 2 files changed, 137 insertions(+), 2 deletions(-) diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index b8dfba0f..b5795518 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -42,6 +42,11 @@ exports.movieinfo = function (req, res) { }); }; +/** + * upload torrent file + * @param req + * @param res + */ exports.upload = function (req, res) { var user = req.user; var createUploadFilename = require(path.resolve('./config/lib/multer')).createUploadFilename; @@ -135,11 +140,11 @@ exports.upload = function (req, res) { } else { Torrent.findOne({ info_hash: info_hash - }).exec(function (err, torr) { + }).exec(function (err, torrent) { if (err) { reject(err); } else { - if (torr) { + if (torrent) { message = 'INFO_HASH_ALREADY_EXISTS'; fs.unlink(newfile, function (unlinkError) { @@ -162,3 +167,123 @@ exports.upload = function (req, res) { }; +/** + * create a torrent + * @param req + * @param res + */ +exports.create = function (req, res) { + var torrent = new Torrent(req.body); + torrent.user = req.user; + + torrent.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(torrent); + } + }); +}; + +/** + * read a torrent + * @param req + * @param res + */ +exports.read = function (req, res) { + // convert mongoose document to JSON + var torrent = req.torrent ? req.torrent.toJSON() : {}; + + // Add a custom field to the Article, for determining if the current User is the "owner". + // NOTE: This field is NOT persisted to the database, since it doesn't exist in the Article model. + torrent.isCurrentUserOwner = !!(req.user && torrent.user && torrent.user._id.toString() === req.user._id.toString()); + + res.json(torrent); +}; + +/** + * update a torrent + * @param req + * @param res + */ +exports.update = function (req, res) { + var torrent = req.torrent; + + torrent.info_hash = req.body.info_hash; + torrent.tmdb_id = req.body.tmdb_id; + + // ********** add other fileds value *************** + + torrent.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(torrent); + } + }); +}; + +/** + * delete a torrent + * @param req + * @param res + */ +exports.delete = function (req, res) { + var torrent = req.torrent; + + torrent.remove(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(torrent); + } + }); +}; + +/** + * list all torrents + * @param req + * @param res + */ +exports.list = function (req, res) { + Torrent.find().sort('-createdat').populate('user', 'displayName').exec(function (err, torrents) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(torrents); + } + }); +}; + +/** + * Torrent middleware + */ +exports.torrentByID = function (req, res, next, id) { + + if (!mongoose.Types.ObjectId.isValid(id)) { + return res.status(400).send({ + message: 'TORRENT_ID_INVALID' + }); + } + + Torrent.findById(id).populate('user', 'displayName').exec(function (err, torrent) { + if (err) { + return next(err); + } else if (!torrent) { + return res.status(404).send({ + message: 'No torrent with that id has been found' + }); + } + req.torrent = torrent; + next(); + }); +}; + diff --git a/modules/torrents/server/routes/torrents.server.routes.js b/modules/torrents/server/routes/torrents.server.routes.js index c0ada019..38567082 100644 --- a/modules/torrents/server/routes/torrents.server.routes.js +++ b/modules/torrents/server/routes/torrents.server.routes.js @@ -13,4 +13,14 @@ module.exports = function (app) { app.route('/api/torrents/upload') .post(torrents.upload); + app.route('/api/torrents') + .get(torrents.list) + .post(torrents.create); + + app.route('/api/torrents/:torrentId') + .get(torrents.read) + .put(torrents.update) + .delete(torrents.delete); + + app.param('torrentId', torrents.torrentByID); };