]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/middlewares/validators/metrics.ts
Cleanup useless express validator messages
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / metrics.ts
... / ...
CommitLineData
1import express from 'express'
2import { body } from 'express-validator'
3import { isValidPlayerMode } from '@server/helpers/custom-validators/metrics'
4import { isIdOrUUIDValid, toCompleteUUID } from '@server/helpers/custom-validators/misc'
5import { CONFIG } from '@server/initializers/config'
6import { HttpStatusCode, PlaybackMetricCreate } from '@shared/models'
7import { logger } from '../../helpers/logger'
8import { areValidationErrors, doesVideoExist } from './shared'
9
10const addPlaybackMetricValidator = [
11 body('resolution')
12 .isInt({ min: 0 }),
13 body('fps')
14 .optional()
15 .isInt({ min: 0 }),
16 body('playerMode')
17 .custom(isValidPlayerMode),
18
19 body('resolutionChanges')
20 .isInt({ min: 0 }),
21
22 body('errors')
23 .isInt({ min: 0 }),
24
25 body('downloadedBytesP2P')
26 .isInt({ min: 0 }),
27 body('downloadedBytesHTTP')
28 .isInt({ min: 0 }),
29
30 body('uploadedBytesP2P')
31 .isInt({ min: 0 }),
32
33 body('videoId')
34 .customSanitizer(toCompleteUUID)
35 .custom(isIdOrUUIDValid),
36
37 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
38 logger.debug('Checking addPlaybackMetricValidator parameters.', { parameters: req.query })
39
40 if (!CONFIG.OPEN_TELEMETRY.METRICS.ENABLED) return res.sendStatus(HttpStatusCode.NO_CONTENT_204)
41
42 const body: PlaybackMetricCreate = req.body
43
44 if (areValidationErrors(req, res)) return
45 if (!await doesVideoExist(body.videoId, res, 'only-immutable-attributes')) return
46
47 return next()
48 }
49]
50
51// ---------------------------------------------------------------------------
52
53export {
54 addPlaybackMetricValidator
55}