]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/middlewares/validators/utils.ts
Reorganize plugin models
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / utils.ts
CommitLineData
69818c93 1import * as express from 'express'
c8861d5d 2import { query, validationResult } from 'express-validator'
da854ddd 3import { logger } from '../../helpers/logger'
2d53be02 4import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
c45f7f84 5
4e50b6a1
C
6function areValidationErrors (req: express.Request, res: express.Response) {
7 const errors = validationResult(req)
8
9 if (!errors.isEmpty()) {
10 logger.warn('Incorrect request parameters', { path: req.originalUrl, err: errors.mapped() })
2d53be02
RK
11 res.status(HttpStatusCode.BAD_REQUEST_400)
12 .json({ errors: errors.mapped() })
4e50b6a1
C
13
14 return true
15 }
16
17 return false
18}
19
18b24b2d 20function checkSort (sortableColumns: string[], tags: string[] = []) {
5c328e66
C
21 return [
22 query('sort').optional().isIn(sortableColumns).withMessage('Should have correct sortable column'),
23
24 (req: express.Request, res: express.Response, next: express.NextFunction) => {
18b24b2d 25 logger.debug('Checking sort parameters', { parameters: req.query, tags })
5c328e66
C
26
27 if (areValidationErrors(req, res)) return
28
29 return next()
30 }
31 ]
32}
33
34function createSortableColumns (sortableColumns: string[]) {
35 const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn)
36
37 return sortableColumns.concat(sortableColumnDesc)
38}
39
9f10b292 40// ---------------------------------------------------------------------------
c45f7f84 41
65fcc311 42export {
5c328e66
C
43 areValidationErrors,
44 checkSort,
45 createSortableColumns
65fcc311 46}