3 const validator
= require('express-validator').validator
4 const values
= require('lodash/values')
6 const constants
= require('../../initializers/constants')
7 const usersValidators
= require('./users')
8 const miscValidators
= require('./misc')
9 const VIDEOS_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEOS
10 const VIDEO_ABUSES_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEO_ABUSES
11 const VIDEO_EVENTS_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEO_EVENTS
13 const videosValidators
= {
20 isVideoDescriptionValid
,
25 isVideoThumbnailValid
,
26 isVideoThumbnailDataValid
,
29 isVideoAbuseReasonValid
,
30 isVideoAbuseReporterUsernameValid
,
34 isVideoRatingTypeValid
,
36 isVideoEventCountValid
39 function isVideoAuthorValid (value
) {
40 return usersValidators
.isUserUsernameValid(value
)
43 function isVideoDateValid (value
) {
44 return validator
.isDate(value
)
47 function isVideoCategoryValid (value
) {
48 return constants
.VIDEO_CATEGORIES
[value
] !== undefined
51 function isVideoLicenceValid (value
) {
52 return constants
.VIDEO_LICENCES
[value
] !== undefined
55 function isVideoLanguageValid (value
) {
56 return value
=== null || constants
.VIDEO_LANGUAGES
[value
] !== undefined
59 function isVideoNSFWValid (value
) {
60 return validator
.isBoolean(value
)
63 function isVideoDescriptionValid (value
) {
64 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
67 function isVideoDurationValid (value
) {
68 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
71 function isVideoExtnameValid (value
) {
72 return VIDEOS_CONSTRAINTS_FIELDS
.EXTNAME
.indexOf(value
) !== -1
75 function isVideoInfoHashValid (value
) {
76 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.INFO_HASH
)
79 function isVideoNameValid (value
) {
80 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
83 function isVideoTagsValid (tags
) {
84 return miscValidators
.isArray(tags
) &&
85 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
86 tags
.every(function (tag
) {
87 return validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
91 function isVideoThumbnailValid (value
) {
92 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
95 function isVideoThumbnailDataValid (value
) {
96 return validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL_DATA
)
99 function isVideoRemoteIdValid (value
) {
100 return validator
.isUUID(value
, 4)
103 function isVideoAbuseReasonValid (value
) {
104 return validator
.isLength(value
, VIDEO_ABUSES_CONSTRAINTS_FIELDS
.REASON
)
107 function isVideoAbuseReporterUsernameValid (value
) {
108 return usersValidators
.isUserUsernameValid(value
)
111 function isVideoViewsValid (value
) {
112 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.VIEWS
)
115 function isVideoLikesValid (value
) {
116 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.LIKES
)
119 function isVideoDislikesValid (value
) {
120 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DISLIKES
)
123 function isVideoEventCountValid (value
) {
124 return validator
.isInt(value
+ '', VIDEO_EVENTS_CONSTRAINTS_FIELDS
.COUNT
)
127 function isVideoRatingTypeValid (value
) {
128 return values(constants
.VIDEO_RATE_TYPES
).indexOf(value
) !== -1
131 function isVideoFile (value
, files
) {
133 if (!files
) return false
135 // Should have videofile file
136 const videofile
= files
.videofile
137 if (!videofile
|| videofile
.length
=== 0) return false
139 // The file should exist
140 const file
= videofile
[0]
141 if (!file
|| !file
.originalname
) return false
143 return new RegExp('^video/(webm|mp4|ogg)$', 'i').test(file
.mimetype
)
146 // ---------------------------------------------------------------------------
148 module
.exports
= videosValidators