From 93e1258c7cbc0d1235ca6d2a1f7c1875985328b8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 25 Aug 2017 11:36:23 +0200 Subject: Move video file metadata in their own table Will be used for user video quotas and multiple video resolutions --- server/helpers/custom-validators/remote/videos.ts | 19 ++++++++--- server/helpers/custom-validators/videos.ts | 39 +++++++++++++++-------- 2 files changed, 40 insertions(+), 18 deletions(-) (limited to 'server/helpers/custom-validators') diff --git a/server/helpers/custom-validators/remote/videos.ts b/server/helpers/custom-validators/remote/videos.ts index b33d8c9be..091cd2186 100644 --- a/server/helpers/custom-validators/remote/videos.ts +++ b/server/helpers/custom-validators/remote/videos.ts @@ -23,10 +23,11 @@ import { isVideoNSFWValid, isVideoDescriptionValid, isVideoDurationValid, - isVideoInfoHashValid, + isVideoFileInfoHashValid, isVideoNameValid, isVideoTagsValid, - isVideoExtnameValid + isVideoFileExtnameValid, + isVideoFileResolutionValid } from '../videos' const ENDPOINT_ACTIONS = REQUEST_ENDPOINT_ACTIONS[REQUEST_ENDPOINTS.VIDEOS] @@ -121,14 +122,22 @@ function isCommonVideoAttributesValid (video: any) { isVideoNSFWValid(video.nsfw) && isVideoDescriptionValid(video.description) && isVideoDurationValid(video.duration) && - isVideoInfoHashValid(video.infoHash) && isVideoNameValid(video.name) && isVideoTagsValid(video.tags) && isVideoUUIDValid(video.uuid) && - isVideoExtnameValid(video.extname) && isVideoViewsValid(video.views) && isVideoLikesValid(video.likes) && - isVideoDislikesValid(video.dislikes) + isVideoDislikesValid(video.dislikes) && + isArray(video.files) && + video.files.every(videoFile => { + if (!videoFile) return false + + return ( + isVideoFileInfoHashValid(videoFile.infoHash) && + isVideoFileExtnameValid(videoFile.extname) && + isVideoFileResolutionValid(videoFile.resolution) + ) + }) } function isRequestTypeAddValid (value: string) { diff --git a/server/helpers/custom-validators/videos.ts b/server/helpers/custom-validators/videos.ts index 62132acb1..139fa760f 100644 --- a/server/helpers/custom-validators/videos.ts +++ b/server/helpers/custom-validators/videos.ts @@ -7,7 +7,8 @@ import { VIDEO_CATEGORIES, VIDEO_LICENCES, VIDEO_LANGUAGES, - VIDEO_RATE_TYPES + VIDEO_RATE_TYPES, + VIDEO_FILE_RESOLUTIONS } from '../../initializers' import { isUserUsernameValid } from './users' import { isArray, exists } from './misc' @@ -53,14 +54,6 @@ function isVideoDurationValid (value: string) { return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.DURATION) } -function isVideoExtnameValid (value: string) { - return VIDEOS_CONSTRAINTS_FIELDS.EXTNAME.indexOf(value) !== -1 -} - -function isVideoInfoHashValid (value: string) { - return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.INFO_HASH) -} - function isVideoNameValid (value: string) { return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME) } @@ -128,6 +121,22 @@ function isVideoFile (value: string, files: { [ fieldname: string ]: Express.Mul return new RegExp('^video/(webm|mp4|ogg)$', 'i').test(file.mimetype) } +function isVideoFileSizeValid (value: string) { + return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.FILE_SIZE) +} + +function isVideoFileResolutionValid (value: string) { + return VIDEO_FILE_RESOLUTIONS[value] !== undefined +} + +function isVideoFileExtnameValid (value: string) { + return VIDEOS_CONSTRAINTS_FIELDS.EXTNAME.indexOf(value) !== -1 +} + +function isVideoFileInfoHashValid (value: string) { + return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.INFO_HASH) +} + // --------------------------------------------------------------------------- export { @@ -140,12 +149,12 @@ export { isVideoNSFWValid, isVideoDescriptionValid, isVideoDurationValid, - isVideoInfoHashValid, + isVideoFileInfoHashValid, isVideoNameValid, isVideoTagsValid, isVideoThumbnailValid, isVideoThumbnailDataValid, - isVideoExtnameValid, + isVideoFileExtnameValid, isVideoUUIDValid, isVideoAbuseReasonValid, isVideoAbuseReporterUsernameValid, @@ -154,7 +163,9 @@ export { isVideoLikesValid, isVideoRatingTypeValid, isVideoDislikesValid, - isVideoEventCountValid + isVideoEventCountValid, + isVideoFileSizeValid, + isVideoFileResolutionValid } declare global { @@ -183,7 +194,9 @@ declare global { isVideoLikesValid, isVideoRatingTypeValid, isVideoDislikesValid, - isVideoEventCountValid + isVideoEventCountValid, + isVideoFileSizeValid, + isVideoFileResolutionValid } } } -- cgit v1.2.3