X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideo-blacklist.ts;h=3c1ef1b4ed391ff391ab9321cf6454d3350256b2;hb=bbe0f0645ca958d33a3f409b15166609733b663f;hp=30c6d4bd96bf0db6e2e44abc21881c08473cbd7d;hpb=35bf0c83c80f59ca79f4b84fac8700f17adeb22d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/video-blacklist.ts b/server/middlewares/validators/video-blacklist.ts index 30c6d4bd9..3c1ef1b4e 100644 --- a/server/middlewares/validators/video-blacklist.ts +++ b/server/middlewares/validators/video-blacklist.ts @@ -1,35 +1,37 @@ -import { param } from 'express-validator/check' import * as express from 'express' - -import { database as db } from '../../initializers/database' -import { checkErrors } from './utils' -import { logger, isVideoIdOrUUIDValid, checkVideoExists } from '../../helpers' +import { param } from 'express-validator/check' +import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' +import { isVideoExist } from '../../helpers/custom-validators/videos' +import { logger } from '../../helpers/logger' +import { VideoModel } from '../../models/video/video' +import { VideoBlacklistModel } from '../../models/video/video-blacklist' +import { areValidationErrors } from './utils' const videosBlacklistRemoveValidator = [ - param('videoId').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), + param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), - (req: express.Request, res: express.Response, next: express.NextFunction) => { + async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking blacklistRemove parameters.', { parameters: req.params }) - checkErrors(req, res, () => { - checkVideoExists(req.params.videoId, res, () => { - checkVideoIsBlacklisted(req, res, next) - }) - }) + if (areValidationErrors(req, res)) return + if (!await isVideoExist(req.params.videoId, res)) return + if (!await checkVideoIsBlacklisted(res.locals.video, res)) return + + return next() } ] const videosBlacklistAddValidator = [ - param('videoId').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), + param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), - (req: express.Request, res: express.Response, next: express.NextFunction) => { + async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videosBlacklist parameters', { parameters: req.params }) - checkErrors(req, res, () => { - checkVideoExists(req.params.videoId, res, () => { - checkVideoIsBlacklistable(req, res, next) - }) - }) + if (areValidationErrors(req, res)) return + if (!await isVideoExist(req.params.videoId, res)) return + if (!checkVideoIsBlacklistable(res.locals.video, res)) return + + return next() } ] @@ -41,27 +43,27 @@ export { } // --------------------------------------------------------------------------- -function checkVideoIsBlacklistable (req: express.Request, res: express.Response, callback: () => void) { - if (res.locals.video.isOwned() === true) { - return res.status(403) +function checkVideoIsBlacklistable (video: VideoModel, res: express.Response) { + if (video.isOwned() === true) { + res.status(403) .json({ error: 'Cannot blacklist a local video' }) .end() + + return false } - callback() + return true } -function checkVideoIsBlacklisted (req: express.Request, res: express.Response, callback: () => void) { - db.BlacklistedVideo.loadByVideoId(res.locals.video.id) - .then(blacklistedVideo => { - if (!blacklistedVideo) return res.status(404).send('Blacklisted video not found') +async function checkVideoIsBlacklisted (video: VideoModel, res: express.Response) { + const blacklistedVideo = await VideoBlacklistModel.loadByVideoId(video.id) + if (!blacklistedVideo) { + res.status(404) + .send('Blacklisted video not found') - res.locals.blacklistedVideo = blacklistedVideo + return false + } - callback() - }) - .catch(err => { - logger.error('Error in blacklistRemove request validator', { error: err }) - return res.sendStatus(500) - }) + res.locals.blacklistedVideo = blacklistedVideo + return true }