]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/middlewares/validators/search.ts
Add Podcast RSS feeds (#5487)
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / search.ts
1 import express from 'express'
2 import { query } from 'express-validator'
3 import { isSearchTargetValid } from '@server/helpers/custom-validators/search'
4 import { isHostValid } from '@server/helpers/custom-validators/servers'
5 import { areUUIDsValid, isDateValid, isNotEmptyStringArray, toCompleteUUIDs } from '../../helpers/custom-validators/misc'
6 import { areValidationErrors } from './shared'
7
8 const 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
55 const 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
80 const 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
108 export {
109 videosSearchValidator,
110 videoChannelsListSearchValidator,
111 videoPlaylistsListSearchValidator
112 }