-import * as express from 'express'
-import { areValidationErrors } from './utils'
+import express from 'express'
+import { query } from 'express-validator'
+import { isSearchTargetValid } from '@server/helpers/custom-validators/search'
+import { isHostValid } from '@server/helpers/custom-validators/servers'
+import { areUUIDsValid, isDateValid, isNotEmptyStringArray, toCompleteUUIDs } from '../../helpers/custom-validators/misc'
import { logger } from '../../helpers/logger'
-import { query } from 'express-validator/check'
-import { isNumberArray, isStringArray, isNSFWQueryValid } from '../../helpers/custom-validators/search'
-import { isBooleanValid, isDateValid, toArray } from '../../helpers/custom-validators/misc'
+import { areValidationErrors } from './shared'
const videosSearchValidator = [
query('search').optional().not().isEmpty().withMessage('Should have a valid search'),
- query('startDate').optional().custom(isDateValid).withMessage('Should have a valid start date'),
- query('endDate').optional().custom(isDateValid).withMessage('Should have a valid end date'),
+ query('host')
+ .optional()
+ .custom(isHostValid).withMessage('Should have a valid host'),
+
+ query('startDate')
+ .optional()
+ .custom(isDateValid).withMessage('Should have a start date that conforms to ISO 8601'),
+ query('endDate')
+ .optional()
+ .custom(isDateValid).withMessage('Should have a end date that conforms to ISO 8601'),
+
+ query('originallyPublishedStartDate')
+ .optional()
+ .custom(isDateValid).withMessage('Should have a published start date that conforms to ISO 8601'),
+ query('originallyPublishedEndDate')
+ .optional()
+ .custom(isDateValid).withMessage('Should have a published end date that conforms to ISO 8601'),
+
+ query('durationMin')
+ .optional()
+ .isInt().withMessage('Should have a valid min duration'),
+ query('durationMax')
+ .optional()
+ .isInt().withMessage('Should have a valid max duration'),
+
+ query('uuids')
+ .optional()
+ .toArray()
+ .customSanitizer(toCompleteUUIDs)
+ .custom(areUUIDsValid).withMessage('Should have valid uuids'),
- query('durationMin').optional().isInt().withMessage('Should have a valid min duration'),
- query('durationMax').optional().isInt().withMessage('Should have a valid max duration'),
+ query('searchTarget').optional().custom(isSearchTargetValid).withMessage('Should have a valid search target'),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
logger.debug('Checking videos search query', { parameters: req.query })
}
]
-const videoChannelsSearchValidator = [
- query('search').not().isEmpty().withMessage('Should have a valid search'),
+const videoChannelsListSearchValidator = [
+ query('search')
+ .optional()
+ .not().isEmpty().withMessage('Should have a valid search'),
+
+ query('host')
+ .optional()
+ .custom(isHostValid).withMessage('Should have a valid host'),
+
+ query('searchTarget')
+ .optional()
+ .custom(isSearchTargetValid).withMessage('Should have a valid search target'),
+
+ query('handles')
+ .optional()
+ .toArray()
+ .custom(isNotEmptyStringArray).withMessage('Should have valid handles'),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
logger.debug('Checking video channels search query', { parameters: req.query })
}
]
-const commonVideosFiltersValidator = [
- query('categoryOneOf')
- .optional()
- .customSanitizer(toArray)
- .custom(isNumberArray).withMessage('Should have a valid one of category array'),
- query('licenceOneOf')
- .optional()
- .customSanitizer(toArray)
- .custom(isNumberArray).withMessage('Should have a valid one of licence array'),
- query('languageOneOf')
+const videoPlaylistsListSearchValidator = [
+ query('search')
.optional()
- .customSanitizer(toArray)
- .custom(isStringArray).withMessage('Should have a valid one of language array'),
- query('tagsOneOf')
+ .not().isEmpty().withMessage('Should have a valid search'),
+
+ query('host')
.optional()
- .customSanitizer(toArray)
- .custom(isStringArray).withMessage('Should have a valid one of tags array'),
- query('tagsAllOf')
+ .custom(isHostValid).withMessage('Should have a valid host'),
+
+ query('searchTarget')
.optional()
- .customSanitizer(toArray)
- .custom(isStringArray).withMessage('Should have a valid all of tags array'),
- query('nsfw')
+ .custom(isSearchTargetValid).withMessage('Should have a valid search target'),
+
+ query('uuids')
.optional()
- .custom(isNSFWQueryValid).withMessage('Should have a valid NSFW attribute'),
+ .toArray()
+ .customSanitizer(toCompleteUUIDs)
+ .custom(areUUIDsValid).withMessage('Should have valid uuids'),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking commons video filters query', { parameters: req.query })
+ logger.debug('Checking video playlists search query', { parameters: req.query })
if (areValidationErrors(req, res)) return
// ---------------------------------------------------------------------------
export {
- commonVideosFiltersValidator,
- videoChannelsSearchValidator,
- videosSearchValidator
+ videosSearchValidator,
+ videoChannelsListSearchValidator,
+ videoPlaylistsListSearchValidator
}