]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/middlewares/validators/videos/video-blacklist.ts
Merge branch 'release/v1.2.0'
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / videos / video-blacklist.ts
CommitLineData
35bf0c83 1import * as express from 'express'
26b7305a 2import { body, param } from 'express-validator/check'
5abb9fbb 3import { isBooleanValid, isIdOrUUIDValid } from '../../../helpers/custom-validators/misc'
6e46de09
C
4import { isVideoExist } from '../../../helpers/custom-validators/videos'
5import { logger } from '../../../helpers/logger'
6import { areValidationErrors } from '../utils'
7import { isVideoBlacklistExist, isVideoBlacklistReasonValid } from '../../../helpers/custom-validators/video-blacklist'
5abb9fbb 8import { VideoModel } from '../../../models/video/video'
35bf0c83
C
9
10const videosBlacklistRemoveValidator = [
72c7248b 11 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
35bf0c83 12
a2431b7d 13 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
35bf0c83
C
14 logger.debug('Checking blacklistRemove parameters.', { parameters: req.params })
15
a2431b7d
C
16 if (areValidationErrors(req, res)) return
17 if (!await isVideoExist(req.params.videoId, res)) return
26b7305a 18 if (!await isVideoBlacklistExist(res.locals.video.id, res)) return
a2431b7d
C
19
20 return next()
35bf0c83
C
21 }
22]
23
24const videosBlacklistAddValidator = [
72c7248b 25 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
5abb9fbb
C
26 body('unfederate')
27 .optional()
28 .toBoolean()
29 .custom(isBooleanValid).withMessage('Should have a valid unfederate boolean'),
26b7305a
C
30 body('reason')
31 .optional()
32 .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'),
35bf0c83 33
a2431b7d 34 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
26b7305a 35 logger.debug('Checking videosBlacklistAdd parameters', { parameters: req.params })
35bf0c83 36
a2431b7d
C
37 if (areValidationErrors(req, res)) return
38 if (!await isVideoExist(req.params.videoId, res)) return
a2431b7d 39
5abb9fbb
C
40 const video: VideoModel = res.locals.video
41 if (req.body.unfederate === true && video.remote === true) {
42 return res
43 .status(409)
44 .send({ error: 'You cannot unfederate a remote video.' })
45 .end()
46 }
47
a2431b7d 48 return next()
35bf0c83
C
49 }
50]
51
26b7305a
C
52const videosBlacklistUpdateValidator = [
53 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
54 body('reason')
55 .optional()
56 .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'),
35bf0c83 57
26b7305a
C
58 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
59 logger.debug('Checking videosBlacklistUpdate parameters', { parameters: req.params })
35bf0c83 60
26b7305a
C
61 if (areValidationErrors(req, res)) return
62 if (!await isVideoExist(req.params.videoId, res)) return
63 if (!await isVideoBlacklistExist(res.locals.video.id, res)) return
a2431b7d 64
26b7305a 65 return next()
35bf0c83 66 }
26b7305a 67]
35bf0c83 68
26b7305a 69// ---------------------------------------------------------------------------
35bf0c83 70
26b7305a
C
71export {
72 videosBlacklistAddValidator,
73 videosBlacklistRemoveValidator,
74 videosBlacklistUpdateValidator
35bf0c83 75}