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
10 const VIDEO_EVENTS_CONSTRAINTS_FIELDS
= constants
.CONSTRAINTS_FIELDS
.VIDEO_EVENTS
12 const videosValidators
= {
15 isVideoDescriptionValid
,
20 isVideoThumbnailValid
,
21 isVideoThumbnailDataValid
,
24 isVideoAbuseReasonValid
,
25 isVideoAbuseReporterUsernameValid
,
30 isVideoEventCountValid
33 function isVideoAuthorValid (value
) {
34 return usersValidators
.isUserUsernameValid(value
)
37 function isVideoDateValid (value
) {
38 return validator
.isDate(value
)
41 function isVideoDescriptionValid (value
) {
42 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
45 function isVideoDurationValid (value
) {
46 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
49 function isVideoExtnameValid (value
) {
50 return VIDEOS_CONSTRAINTS_FIELDS
.EXTNAME
.indexOf(value
) !== -1
53 function isVideoInfoHashValid (value
) {
54 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.INFO_HASH
)
57 function isVideoNameValid (value
) {
58 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
61 function isVideoTagsValid (tags
) {
62 return miscValidators
.isArray(tags
) &&
63 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
64 tags
.every(function (tag
) {
65 return validator
.isAlphanumeric(tag
) &&
66 validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
70 function isVideoThumbnailValid (value
) {
71 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
74 function isVideoThumbnailDataValid (value
) {
75 return validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL_DATA
)
78 function isVideoRemoteIdValid (value
) {
79 return validator
.isUUID(value
, 4)
82 function isVideoAbuseReasonValid (value
) {
83 return validator
.isLength(value
, VIDEO_ABUSES_CONSTRAINTS_FIELDS
.REASON
)
86 function isVideoAbuseReporterUsernameValid (value
) {
87 return usersValidators
.isUserUsernameValid(value
)
90 function isVideoViewsValid (value
) {
91 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.VIEWS
)
94 function isVideoLikesValid (value
) {
95 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.LIKES
)
98 function isVideoDislikesValid (value
) {
99 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DISLIKES
)
102 function isVideoEventCountValid (value
) {
103 return validator
.isInt(value
+ '', VIDEO_EVENTS_CONSTRAINTS_FIELDS
.COUNT
)
106 function isVideoFile (value
, files
) {
108 if (!files
) return false
110 // Should have videofile file
111 const videofile
= files
.videofile
112 if (!videofile
|| videofile
.length
=== 0) return false
114 // The file should exist
115 const file
= videofile
[0]
116 if (!file
|| !file
.originalname
) return false
118 return new RegExp('^video/(webm|mp4|ogg)$', 'i').test(file
.mimetype
)
121 // ---------------------------------------------------------------------------
123 module
.exports
= videosValidators