X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2FcustomValidators.js;h=9c3ff38ef03d39ae9941c54b7da73e48c1450791;hb=be587647f98a4b83ca06a61fe55c7ac5d60927c6;hp=20c41f5da3d4af555d9a545eea3873f8cc66f5be;hpb=b9a3e09ad5a7673f64556d1dba122ed4c4fac980;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/customValidators.js b/server/helpers/customValidators.js index 20c41f5da..9c3ff38ef 100644 --- a/server/helpers/customValidators.js +++ b/server/helpers/customValidators.js @@ -1,25 +1,47 @@ 'use strict' -var validator = require('validator') +const validator = require('express-validator').validator -var customValidators = { - eachIsRemoteVideosAddValid: eachIsRemoteVideosAddValid, - eachIsRemoteVideosRemoveValid: eachIsRemoteVideosRemoveValid, - isArray: isArray +const constants = require('../initializers/constants') +const VIDEOS_CONSTRAINTS_FIELDS = constants.VIDEOS_CONSTRAINTS_FIELDS + +const customValidators = { + exists: exists, + isEachAddRemoteVideosValid: isEachAddRemoteVideosValid, + isEachRemoveRemoteVideosValid: isEachRemoveRemoteVideosValid, + isArray: isArray, + isVideoAuthorValid: isVideoAuthorValid, + isVideoDateValid: isVideoDateValid, + isVideoDescriptionValid: isVideoDescriptionValid, + isVideoDurationValid: isVideoDurationValid, + isVideoMagnetUriValid: isVideoMagnetUriValid, + isVideoNameValid: isVideoNameValid, + isVideoPodUrlValid: isVideoPodUrlValid, + isVideoTagsValid: isVideoTagsValid, + isVideoThumbnailValid: isVideoThumbnailValid +} + +function exists (value) { + return value !== undefined && value !== null } -function eachIsRemoteVideosAddValid (values) { - return values.every(function (val) { - return validator.isLength(val.name, 1, 50) && - validator.isLength(val.description, 1, 50) && - validator.isLength(val.magnetUri, 10) && - validator.isURL(val.podUrl) +function isEachAddRemoteVideosValid (videos) { + return videos.every(function (video) { + return isVideoAuthorValid(video.author) && + isVideoDateValid(video.createdDate) && + isVideoDescriptionValid(video.description) && + isVideoDurationValid(video.duration) && + isVideoMagnetUriValid(video.magnetUri) && + isVideoNameValid(video.name) && + isVideoPodUrlValid(video.podUrl) && + isVideoTagsValid(video.tags) && + isVideoThumbnailValid(video.thumbnailBase64) }) } -function eachIsRemoteVideosRemoveValid (values) { - return values.every(function (val) { - return validator.isLength(val.magnetUri, 10) +function isEachRemoveRemoteVideosValid (videos) { + return videos.every(function (video) { + return isVideoMagnetUriValid(video.magnetUri) }) } @@ -27,6 +49,50 @@ function isArray (value) { return Array.isArray(value) } +function isVideoAuthorValid (value) { + return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.AUTHOR) +} + +function isVideoDateValid (value) { + return validator.isDate(value) +} + +function isVideoDescriptionValid (value) { + return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION) +} + +function isVideoDurationValid (value) { + return validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.DURATION) +} + +function isVideoMagnetUriValid (value) { + return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.MAGNET_URI) +} + +function isVideoNameValid (value) { + return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME) +} + +function isVideoPodUrlValid (value) { + return validator.isURL(value) +} + +function isVideoTagsValid (tags) { + return isArray(tags) && + validator.isInt(tags.length, VIDEOS_CONSTRAINTS_FIELDS.TAGS) && + tags.every(function (tag) { + return validator.isAlphanumeric(tag) && + validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG) + }) +} + +function isVideoThumbnailValid (value) { + return validator.isBase64(value) && + validator.isByteLength(value, VIDEOS_CONSTRAINTS_FIELDS.THUMBNAIL) +} + // --------------------------------------------------------------------------- module.exports = customValidators + +// ---------------------------------------------------------------------------