mirror of https://github.com/Chocobozzz/PeerTube
Server: optimization for videoGet and videoRemove
parent
79066fdf33
commit
818f7987eb
|
@ -200,7 +200,7 @@ function addVideo (req, res, next) {
|
|||
}
|
||||
|
||||
function updateVideo (req, res, next) {
|
||||
let videoInstance = res.locals.video
|
||||
const videoInstance = res.locals.video
|
||||
const videoInfosToUpdate = req.body
|
||||
|
||||
waterfall([
|
||||
|
@ -275,15 +275,8 @@ function updateVideo (req, res, next) {
|
|||
}
|
||||
|
||||
function getVideo (req, res, next) {
|
||||
db.Video.loadAndPopulateAuthorAndPodAndTags(req.params.id, function (err, video) {
|
||||
if (err) return next(err)
|
||||
|
||||
if (!video) {
|
||||
return res.type('json').status(204).end()
|
||||
}
|
||||
|
||||
res.json(video.toFormatedJSON())
|
||||
})
|
||||
const videoInstance = res.locals.video
|
||||
res.json(videoInstance.toFormatedJSON())
|
||||
}
|
||||
|
||||
function listVideos (req, res, next) {
|
||||
|
@ -295,20 +288,9 @@ function listVideos (req, res, next) {
|
|||
}
|
||||
|
||||
function removeVideo (req, res, next) {
|
||||
const videoId = req.params.id
|
||||
const videoInstance = res.locals.video
|
||||
|
||||
waterfall([
|
||||
function loadVideo (callback) {
|
||||
db.Video.load(videoId, function (err, video) {
|
||||
return callback(err, video)
|
||||
})
|
||||
},
|
||||
|
||||
function deleteVideo (video, callback) {
|
||||
// Informations to other pods will be sent by the afterDestroy video hook
|
||||
video.destroy().asCallback(callback)
|
||||
}
|
||||
], function andFinally (err) {
|
||||
videoInstance.destroy().asCallback(function (err) {
|
||||
if (err) {
|
||||
logger.error('Errors when removed the video.', { error: err })
|
||||
return next(err)
|
||||
|
|
|
@ -71,15 +71,16 @@ function videosRemove (req, res, next) {
|
|||
logger.debug('Checking videosRemove parameters', { parameters: req.params })
|
||||
|
||||
checkErrors(req, res, function () {
|
||||
db.Video.loadAndPopulateAuthor(req.params.id, function (err, video) {
|
||||
if (err) {
|
||||
logger.error('Error in videosRemove request validator.', { error: err })
|
||||
return res.sendStatus(500)
|
||||
checkVideoExists(req.params.id, res, function () {
|
||||
// We need to make additional checks
|
||||
|
||||
if (res.locals.video.isOwned() === false) {
|
||||
return res.status(403).send('Cannot remove video of another pod')
|
||||
}
|
||||
|
||||
if (!video) return res.status(404).send('Video not found')
|
||||
else if (video.isOwned() === false) return res.status(403).send('Cannot remove video of another pod')
|
||||
else if (video.Author.name !== res.locals.oauth.token.user.username) return res.status(403).send('Cannot remove video of another user')
|
||||
if (res.locals.video.authorId !== res.locals.oauth.token.User.id) {
|
||||
return res.status(403).send('Cannot remove video of another user')
|
||||
}
|
||||
|
||||
next()
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue