3 const validator
= require('express-validator').validator
5 const constants
= require('../../initializers/constants')
6 const usersValidators
= require('./users')
7 const miscValidators
= require('./misc')
8 const VIDEOS_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEOS
9 const VIDEO_ABUSES_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEO_ABUSES
11 const videosValidators
= {
14 isVideoDescriptionValid
,
19 isVideoThumbnailValid
,
20 isVideoThumbnailDataValid
,
23 isVideoAbuseReasonValid
,
24 isVideoAbuseReporterUsernameValid
,
31 function isVideoAuthorValid (value
) {
32 return usersValidators
.isUserUsernameValid(value
)
35 function isVideoDateValid (value
) {
36 return validator
.isDate(value
)
39 function isVideoDescriptionValid (value
) {
40 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
43 function isVideoDurationValid (value
) {
44 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
47 function isVideoExtnameValid (value
) {
48 return VIDEOS_CONSTRAINTS_FIELDS
.EXTNAME
.indexOf(value
) !== -1
51 function isVideoInfoHashValid (value
) {
52 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.INFO_HASH
)
55 function isVideoNameValid (value
) {
56 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
59 function isVideoTagsValid (tags
) {
60 return miscValidators
.isArray(tags
) &&
61 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
62 tags
.every(function (tag
) {
63 return validator
.isAlphanumeric(tag
) &&
64 validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
68 function isVideoThumbnailValid (value
) {
69 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
72 function isVideoThumbnailDataValid (value
) {
73 return validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL_DATA
)
76 function isVideoRemoteIdValid (value
) {
77 return validator
.isUUID(value
, 4)
80 function isVideoAbuseReasonValid (value
) {
81 return validator
.isLength(value
, VIDEO_ABUSES_CONSTRAINTS_FIELDS
.REASON
)
84 function isVideoAbuseReporterUsernameValid (value
) {
85 return usersValidators
.isUserUsernameValid(value
)
88 function isVideoViewsValid (value
) {
89 return validator
.isInt(value
, { min: 0 })
92 function isVideoLikesValid (value
) {
93 return validator
.isInt(value
, { min: 0 })
96 function isVideoDislikesValid (value
) {
97 return validator
.isInt(value
, { min: 0 })
100 function isVideoFile (value
, files
) {
102 if (!files
) return false
104 // Should have videofile file
105 const videofile
= files
.videofile
106 if (!videofile
|| videofile
.length
=== 0) return false
108 // The file should exist
109 const file
= videofile
[0]
110 if (!file
|| !file
.originalname
) return false
112 return new RegExp('^video/(webm|mp4|ogg)$', 'i').test(file
.mimetype
)
115 // ---------------------------------------------------------------------------
117 module
.exports
= videosValidators