X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Ffeeds.ts;h=e4f5c98fe32a8189377fd5f742d3eae79a3d4b78;hb=c0e71e849a40871ed8eea3dacd8608d380bdb490;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..e4f5c98fe 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 { doesAccountIdExist, isAccountNameValid, doesAccountNameWithHostExist } 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 { doesVideoChannelIdExist, doesVideoChannelNameWithHostExist } from '../../helpers/custom-validators/video-channels' +import { doesVideoExist } 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 doesAccountIdExist(req.query.accountId, res)) return + if (req.query.videoChannelId && !await doesVideoChannelIdExist(req.query.videoChannelId, res)) return + if (req.query.accountName && !await doesAccountNameWithHostExist(req.query.accountName, res)) return + if (req.query.videoChannelName && !await doesVideoChannelNameWithHostExist(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 doesVideoExist(req.query.videoId, res)) return return next() } @@ -31,5 +50,6 @@ const feedsValidator = [ // --------------------------------------------------------------------------- export { - feedsValidator + videoFeedsValidator, + videoCommentsFeedsValidator }