X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Ffeeds.ts;h=969ce2526ef98009c5d4a254eee2dd71b9e8a181;hb=662fb3ab5e3aafa49c96809a61239c9046a5c485;hp=6a8cfce86d203fc724d9ba980831a2e08d525621;hpb=244e76a552ef05a5067134b1065d26dd89246d8c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/feeds.ts b/server/middlewares/validators/feeds.ts index 6a8cfce86..969ce2526 100644 --- a/server/middlewares/validators/feeds.ts +++ b/server/middlewares/validators/feeds.ts @@ -1,28 +1,47 @@ import * as express from 'express' import { param, query } from 'express-validator/check' -import { isAccountIdExist, isAccountNameValid, isLocalAccountNameExist } from '../../helpers/custom-validators/accounts' -import { join } from 'path' +import { isAccountIdExist, isAccountNameValid, isAccountNameWithHostExist } from '../../helpers/custom-validators/accounts' import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' import { isValidRSSFeed } from '../../helpers/custom-validators/feeds' +import { isVideoChannelIdExist, isVideoChannelNameWithHostExist } from '../../helpers/custom-validators/video-channels' +import { isVideoExist } from '../../helpers/custom-validators/videos' +import { isActorPreferredUsernameValid } from '../../helpers/custom-validators/activitypub/actor' -const feedsValidator = [ +const videoFeedsValidator = [ param('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'), query('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'), query('accountId').optional().custom(isIdOrUUIDValid), query('accountName').optional().custom(isAccountNameValid), + query('videoChannelId').optional().custom(isIdOrUUIDValid), + query('videoChannelName').optional().custom(isActorPreferredUsernameValid), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking feeds parameters', { parameters: req.query }) if (areValidationErrors(req, res)) return - if (req.query.accountId) { - if (!await isAccountIdExist(req.query.accountId, res)) return - } else if (req.query.accountName) { - if (!await isLocalAccountNameExist(req.query.accountName, res)) return - } + if (req.query.accountId && !await isAccountIdExist(req.query.accountId, res)) return + if (req.query.videoChannelId && !await isVideoChannelIdExist(req.query.videoChannelId, res)) return + if (req.query.accountName && !await isAccountNameWithHostExist(req.query.accountName, res)) return + if (req.query.videoChannelName && !await isVideoChannelNameWithHostExist(req.query.videoChannelName, res)) return + + return next() + } +] + +const videoCommentsFeedsValidator = [ + param('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'), + query('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'), + query('videoId').optional().custom(isIdOrUUIDValid), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking feeds parameters', { parameters: req.query }) + + if (areValidationErrors(req, res)) return + + if (req.query.videoId && !await isVideoExist(req.query.videoId, res)) return return next() } @@ -31,5 +50,6 @@ const feedsValidator = [ // --------------------------------------------------------------------------- export { - feedsValidator + videoFeedsValidator, + videoCommentsFeedsValidator }