X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fcustom-validators%2Fvideos.ts;h=07aadadb100f3596d0008d43def68431bd409f43;hb=40ff57078e15d5b86ee6b71e198b95d3feb78eaf;hp=05d1dc60744eac1457d496f2afa3383f7584e278;hpb=35bf0c83c80f59ca79f4b84fac8700f17adeb22d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/custom-validators/videos.ts b/server/helpers/custom-validators/videos.ts index 05d1dc607..07aadadb1 100644 --- a/server/helpers/custom-validators/videos.ts +++ b/server/helpers/custom-validators/videos.ts @@ -1,74 +1,96 @@ -import { values } from 'lodash' -import * as validator from 'validator' import * as Promise from 'bluebird' import * as express from 'express' import 'express-validator' +import { values } from 'lodash' import 'multer' - +import * as validator from 'validator' +import { VideoRateType } from '../../../shared' +import { logger } from '../../helpers' import { CONSTRAINTS_FIELDS, + database as db, VIDEO_CATEGORIES, - VIDEO_LICENCES, VIDEO_LANGUAGES, - VIDEO_RATE_TYPES, - database as db + VIDEO_LICENCES, + VIDEO_PRIVACIES, + VIDEO_RATE_TYPES } from '../../initializers' -import { isUserUsernameValid } from './users' -import { isArray, exists } from './misc' import { VideoInstance } from '../../models' -import { logger } from '../../helpers' -import { VideoRateType } from '../../../shared' +import { isActivityPubUrlValid } from './activitypub/misc' +import { exists, isArray } from './misc' const VIDEOS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEOS const VIDEO_ABUSES_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_ABUSES const VIDEO_EVENTS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_EVENTS -function isVideoIdOrUUIDValid (value: string) { - return validator.isInt(value) || isVideoUUIDValid(value) -} - -function isVideoAuthorValid (value: string) { - return isUserUsernameValid(value) +function isVideoCategoryValid (value: number) { + return VIDEO_CATEGORIES[value] !== undefined } -function isVideoDateValid (value: string) { - return exists(value) && validator.isISO8601(value) +// Maybe we don't know the remote category, but that doesn't matter +function isRemoteVideoCategoryValid (value: string) { + return validator.isInt('' + value) } -function isVideoCategoryValid (value: number) { - return VIDEO_CATEGORIES[value] !== undefined +function isVideoUrlValid (value: string) { + return isActivityPubUrlValid(value) } function isVideoLicenceValid (value: number) { return VIDEO_LICENCES[value] !== undefined } +function isVideoPrivacyValid (value: string) { + return VIDEO_PRIVACIES[value] !== undefined +} + +// Maybe we don't know the remote privacy setting, but that doesn't matter +function isRemoteVideoPrivacyValid (value: string) { + return validator.isInt('' + value) +} + +// Maybe we don't know the remote licence, but that doesn't matter +function isRemoteVideoLicenceValid (value: string) { + return validator.isInt('' + value) +} + function isVideoLanguageValid (value: number) { return value === null || VIDEO_LANGUAGES[value] !== undefined } -function isVideoNSFWValid (value: any) { - return typeof value === 'boolean' || (typeof value === 'string' && validator.isBoolean(value)) +// Maybe we don't know the remote language, but that doesn't matter +function isRemoteVideoLanguageValid (value: string) { + return validator.isInt('' + value) } -function isVideoDescriptionValid (value: string) { - return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION) +function isVideoNSFWValid (value: any) { + return typeof value === 'boolean' || (typeof value === 'string' && validator.isBoolean(value)) } function isVideoDurationValid (value: string) { return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.DURATION) } +function isVideoTruncatedDescriptionValid (value: string) { + return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.TRUNCATED_DESCRIPTION) +} + +function isVideoDescriptionValid (value: string) { + return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION) +} + function isVideoNameValid (value: string) { return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME) } +function isVideoTagValid (tag: string) { + return exists(tag) && validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG) +} + function isVideoTagsValid (tags: string[]) { return isArray(tags) && validator.isInt(tags.length.toString(), VIDEOS_CONSTRAINTS_FIELDS.TAGS) && - tags.every(tag => { - return exists(tag) && validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG) - }) + tags.every(tag => isVideoTagValid(tag)) } function isVideoThumbnailValid (value: string) { @@ -79,18 +101,10 @@ function isVideoThumbnailDataValid (value: string) { return exists(value) && validator.isByteLength(value, VIDEOS_CONSTRAINTS_FIELDS.THUMBNAIL_DATA) } -function isVideoUUIDValid (value: string) { - return exists(value) && validator.isUUID('' + value, 4) -} - function isVideoAbuseReasonValid (value: string) { return exists(value) && validator.isLength(value, VIDEO_ABUSES_CONSTRAINTS_FIELDS.REASON) } -function isVideoAbuseReporterUsernameValid (value: string) { - return isUserUsernameValid(value) -} - function isVideoViewsValid (value: string) { return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.VIEWS) } @@ -146,9 +160,9 @@ function isVideoFileInfoHashValid (value: string) { function checkVideoExists (id: string, res: express.Response, callback: () => void) { let promise: Promise if (validator.isInt(id)) { - promise = db.Video.loadAndPopulateAuthorAndPodAndTags(+id) + promise = db.Video.loadAndPopulateAccountAndServerAndTags(+id) } else { // UUID - promise = db.Video.loadByUUIDAndPopulateAuthorAndPodAndTags(id) + promise = db.Video.loadByUUIDAndPopulateAccountAndServerAndTags(id) } promise.then(video => { @@ -170,24 +184,19 @@ function checkVideoExists (id: string, res: express.Response, callback: () => vo // --------------------------------------------------------------------------- export { - isVideoIdOrUUIDValid, - isVideoAuthorValid, - isVideoDateValid, isVideoCategoryValid, isVideoLicenceValid, isVideoLanguageValid, isVideoNSFWValid, + isVideoTruncatedDescriptionValid, isVideoDescriptionValid, - isVideoDurationValid, isVideoFileInfoHashValid, isVideoNameValid, isVideoTagsValid, isVideoThumbnailValid, isVideoThumbnailDataValid, isVideoFileExtnameValid, - isVideoUUIDValid, isVideoAbuseReasonValid, - isVideoAbuseReporterUsernameValid, isVideoFile, isVideoViewsValid, isVideoLikesValid, @@ -195,6 +204,14 @@ export { isVideoDislikesValid, isVideoEventCountValid, isVideoFileSizeValid, + isVideoPrivacyValid, + isRemoteVideoPrivacyValid, + isVideoDurationValid, isVideoFileResolutionValid, - checkVideoExists + checkVideoExists, + isVideoTagValid, + isRemoteVideoCategoryValid, + isRemoteVideoLicenceValid, + isVideoUrlValid, + isRemoteVideoLanguageValid }