Refractor validators
[oweals/peertube.git] / server / helpers / custom-validators / video-channels.ts
1 import * as express from 'express'
2 import 'express-validator'
3 import 'multer'
4 import * as validator from 'validator'
5 import { CONSTRAINTS_FIELDS, database as db } from '../../initializers'
6 import { VideoChannelInstance } from '../../models'
7 import { exists } from './misc'
8
9 const VIDEO_CHANNELS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_CHANNELS
10
11 function isVideoChannelDescriptionValid (value: string) {
12   return value === null || validator.isLength(value, VIDEO_CHANNELS_CONSTRAINTS_FIELDS.DESCRIPTION)
13 }
14
15 function isVideoChannelNameValid (value: string) {
16   return exists(value) && validator.isLength(value, VIDEO_CHANNELS_CONSTRAINTS_FIELDS.NAME)
17 }
18
19 async function isVideoChannelExist (id: string, res: express.Response) {
20   let videoChannel: VideoChannelInstance
21   if (validator.isInt(id)) {
22     videoChannel = await db.VideoChannel.loadAndPopulateAccount(+id)
23   } else { // UUID
24     videoChannel = await db.VideoChannel.loadByUUIDAndPopulateAccount(id)
25   }
26
27   if (!videoChannel) {
28     res.status(404)
29       .json({ error: 'Video channel not found' })
30       .end()
31
32     return false
33   }
34
35   res.locals.videoChannel = videoChannel
36   return true
37 }
38
39 // ---------------------------------------------------------------------------
40
41 export {
42   isVideoChannelDescriptionValid,
43   isVideoChannelNameValid,
44   isVideoChannelExist
45 }