X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fcustom-validators%2Fvideo-channels.ts;h=f13519c1dd0de4fe1604d482e83da2fdadda541b;hb=28f3d1b36a70426795240c9370e47b6c4ba847f8;hp=3de9f041be57de1ae6395725ee9151637dab4367;hpb=a2431b7dcbc72c05101dcdbe631ff84a823aeb51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/custom-validators/video-channels.ts b/server/helpers/custom-validators/video-channels.ts index 3de9f041b..f13519c1d 100644 --- a/server/helpers/custom-validators/video-channels.ts +++ b/server/helpers/custom-validators/video-channels.ts @@ -2,8 +2,8 @@ import * as express from 'express' import 'express-validator' import 'multer' import * as validator from 'validator' -import { CONSTRAINTS_FIELDS, database as db } from '../../initializers' -import { VideoChannelInstance } from '../../models' +import { CONFIG, CONSTRAINTS_FIELDS } from '../../initializers' +import { VideoChannelModel } from '../../models/video/video-channel' import { exists } from './misc' const VIDEO_CHANNELS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_CHANNELS @@ -16,30 +16,57 @@ function isVideoChannelNameValid (value: string) { return exists(value) && validator.isLength(value, VIDEO_CHANNELS_CONSTRAINTS_FIELDS.NAME) } -async function isVideoChannelExist (id: string, res: express.Response) { - let videoChannel: VideoChannelInstance +function isVideoChannelSupportValid (value: string) { + return value === null || (exists(value) && validator.isLength(value, VIDEO_CHANNELS_CONSTRAINTS_FIELDS.SUPPORT)) +} + +async function isLocalVideoChannelNameExist (name: string, res: express.Response) { + const videoChannel = await VideoChannelModel.loadLocalByNameAndPopulateAccount(name) + + return processVideoChannelExist(videoChannel, res) +} + +async function isVideoChannelIdExist (id: string, res: express.Response) { + let videoChannel: VideoChannelModel if (validator.isInt(id)) { - videoChannel = await db.VideoChannel.loadAndPopulateAccount(+id) + videoChannel = await VideoChannelModel.loadAndPopulateAccount(+id) } else { // UUID - videoChannel = await db.VideoChannel.loadByUUIDAndPopulateAccount(id) + videoChannel = await VideoChannelModel.loadByUUIDAndPopulateAccount(id) } - if (!videoChannel) { - res.status(404) - .json({ error: 'Video channel not found' }) - .end() + return processVideoChannelExist(videoChannel, res) +} - return false - } +async function isVideoChannelNameWithHostExist (nameWithDomain: string, res: express.Response) { + const [ name, host ] = nameWithDomain.split('@') + let videoChannel: VideoChannelModel - res.locals.videoChannel = videoChannel - return true + if (!host || host === CONFIG.WEBSERVER.HOST) videoChannel = await VideoChannelModel.loadLocalByNameAndPopulateAccount(name) + else videoChannel = await VideoChannelModel.loadByNameAndHostAndPopulateAccount(name, host) + + return processVideoChannelExist(videoChannel, res) } // --------------------------------------------------------------------------- export { + isVideoChannelNameWithHostExist, + isLocalVideoChannelNameExist, isVideoChannelDescriptionValid, isVideoChannelNameValid, - isVideoChannelExist + isVideoChannelSupportValid, + isVideoChannelIdExist +} + +function processVideoChannelExist (videoChannel: VideoChannelModel, res: express.Response) { + if (!videoChannel) { + res.status(404) + .json({ error: 'Video channel not found' }) + .end() + + return false + } + + res.locals.videoChannel = videoChannel + return true }