]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/middlewares/validators/search.ts
refactor(server): redis > ioredis (#5371)
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / search.ts
... / ...
CommitLineData
1import express from 'express'
2import { query } from 'express-validator'
3import { isSearchTargetValid } from '@server/helpers/custom-validators/search'
4import { isHostValid } from '@server/helpers/custom-validators/servers'
5import { areUUIDsValid, isDateValid, isNotEmptyStringArray, toCompleteUUIDs } from '../../helpers/custom-validators/misc'
6import { areValidationErrors } from './shared'
7
8const videosSearchValidator = [
9 query('search')
10 .optional()
11 .not().isEmpty(),
12
13 query('host')
14 .optional()
15 .custom(isHostValid),
16
17 query('startDate')
18 .optional()
19 .custom(isDateValid).withMessage('Should have a start date that conforms to ISO 8601'),
20 query('endDate')
21 .optional()
22 .custom(isDateValid).withMessage('Should have a end date that conforms to ISO 8601'),
23
24 query('originallyPublishedStartDate')
25 .optional()
26 .custom(isDateValid).withMessage('Should have a published start date that conforms to ISO 8601'),
27 query('originallyPublishedEndDate')
28 .optional()
29 .custom(isDateValid).withMessage('Should have a published end date that conforms to ISO 8601'),
30
31 query('durationMin')
32 .optional()
33 .isInt(),
34 query('durationMax')
35 .optional()
36 .isInt(),
37
38 query('uuids')
39 .optional()
40 .toArray()
41 .customSanitizer(toCompleteUUIDs)
42 .custom(areUUIDsValid).withMessage('Should have valid array of uuid'),
43
44 query('searchTarget')
45 .optional()
46 .custom(isSearchTargetValid),
47
48 (req: express.Request, res: express.Response, next: express.NextFunction) => {
49 if (areValidationErrors(req, res)) return
50
51 return next()
52 }
53]
54
55const videoChannelsListSearchValidator = [
56 query('search')
57 .optional()
58 .not().isEmpty(),
59
60 query('host')
61 .optional()
62 .custom(isHostValid),
63
64 query('searchTarget')
65 .optional()
66 .custom(isSearchTargetValid),
67
68 query('handles')
69 .optional()
70 .toArray()
71 .custom(isNotEmptyStringArray).withMessage('Should have valid array of handles'),
72
73 (req: express.Request, res: express.Response, next: express.NextFunction) => {
74 if (areValidationErrors(req, res)) return
75
76 return next()
77 }
78]
79
80const videoPlaylistsListSearchValidator = [
81 query('search')
82 .optional()
83 .not().isEmpty(),
84
85 query('host')
86 .optional()
87 .custom(isHostValid),
88
89 query('searchTarget')
90 .optional()
91 .custom(isSearchTargetValid),
92
93 query('uuids')
94 .optional()
95 .toArray()
96 .customSanitizer(toCompleteUUIDs)
97 .custom(areUUIDsValid).withMessage('Should have valid array of uuid'),
98
99 (req: express.Request, res: express.Response, next: express.NextFunction) => {
100 if (areValidationErrors(req, res)) return
101
102 return next()
103 }
104]
105
106// ---------------------------------------------------------------------------
107
108export {
109 videosSearchValidator,
110 videoChannelsListSearchValidator,
111 videoPlaylistsListSearchValidator
112}