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
10 const videosValidators
= {
11 isEachRemoteVideosValid
,
14 isVideoDescriptionValid
,
20 isVideoThumbnailValid
,
21 isVideoThumbnail64Valid
24 function isEachRemoteVideosValid (requests
) {
25 return miscValidators
.isArray(requests
) &&
26 requests
.every(function (request
) {
27 const video
= request
.data
29 isRequestTypeAddValid(request
.type
) &&
30 isVideoAuthorValid(video
.author
) &&
31 isVideoDateValid(video
.createdDate
) &&
32 isVideoDescriptionValid(video
.description
) &&
33 isVideoDurationValid(video
.duration
) &&
34 isVideoMagnetValid(video
.magnetUri
) &&
35 isVideoNameValid(video
.name
) &&
36 isVideoPodUrlValid(video
.podUrl
) &&
37 isVideoTagsValid(video
.tags
) &&
38 isVideoThumbnail64Valid(video
.thumbnailBase64
) &&
39 isVideoRemoteIdValid(video
.remoteId
)
42 isRequestTypeRemoveValid(request
.type
) &&
43 isVideoNameValid(video
.name
) &&
44 isVideoRemoteIdValid(video
.remoteId
)
49 function isVideoAuthorValid (value
) {
50 return usersValidators
.isUserUsernameValid(value
)
53 function isVideoDateValid (value
) {
54 return validator
.isDate(value
)
57 function isVideoDescriptionValid (value
) {
58 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
61 function isVideoDurationValid (value
) {
62 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
65 function isVideoMagnetValid (value
) {
66 return validator
.isLength(value
.infoHash
, VIDEOS_CONSTRAINTS_FIELDS
.MAGNET
.XT
)
69 function isVideoNameValid (value
) {
70 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
73 function isVideoPodUrlValid (value
) {
74 // TODO: set options (TLD...)
75 return validator
.isURL(value
)
78 function isVideoTagsValid (tags
) {
79 return miscValidators
.isArray(tags
) &&
80 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
81 tags
.every(function (tag
) {
82 return validator
.isAlphanumeric(tag
) &&
83 validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
87 function isVideoThumbnailValid (value
) {
88 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
91 function isVideoThumbnail64Valid (value
) {
92 return validator
.isBase64(value
) &&
93 validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL64
)
96 function isVideoRemoteIdValid (value
) {
97 return validator
.isMongoId(value
)
100 // ---------------------------------------------------------------------------
102 module
.exports
= videosValidators
104 // ---------------------------------------------------------------------------
106 function isRequestTypeAddValid (value
) {
107 return value
=== 'add'
110 function isRequestTypeRemoveValid (value
) {
111 return value
=== 'remove'