3 const validator
= require('express-validator').validator
5 const constants
= require('../initializers/constants')
6 const VIDEOS_CONSTRAINTS_FIELDS
= constants
.VIDEOS_CONSTRAINTS_FIELDS
8 const customValidators
= {
10 isEachRemoteVideosValid: isEachRemoteVideosValid
,
12 isVideoAuthorValid: isVideoAuthorValid
,
13 isVideoDateValid: isVideoDateValid
,
14 isVideoDescriptionValid: isVideoDescriptionValid
,
15 isVideoDurationValid: isVideoDurationValid
,
16 isVideoMagnetUriValid: isVideoMagnetUriValid
,
17 isVideoNameValid: isVideoNameValid
,
18 isVideoPodUrlValid: isVideoPodUrlValid
,
19 isVideoTagsValid: isVideoTagsValid
,
20 isVideoThumbnailValid: isVideoThumbnailValid
23 function exists (value
) {
24 return value
!== undefined && value
!== null
27 function isEachRemoteVideosValid (requests
) {
28 return requests
.every(function (request
) {
29 const video
= request
.data
31 isRequestTypeAddValid(request
.type
) &&
32 isVideoAuthorValid(video
.author
) &&
33 isVideoDateValid(video
.createdDate
) &&
34 isVideoDescriptionValid(video
.description
) &&
35 isVideoDurationValid(video
.duration
) &&
36 isVideoMagnetUriValid(video
.magnetUri
) &&
37 isVideoNameValid(video
.name
) &&
38 isVideoPodUrlValid(video
.podUrl
) &&
39 isVideoTagsValid(video
.tags
) &&
40 isVideoThumbnailValid(video
.thumbnailBase64
)
43 isRequestTypeRemoveValid(request
.type
) &&
44 isVideoNameValid(video
.name
) &&
45 isVideoMagnetUriValid(video
.magnetUri
)
50 function isArray (value
) {
51 return Array
.isArray(value
)
54 function isRequestTypeAddValid (value
) {
55 return value
=== 'add'
58 function isRequestTypeRemoveValid (value
) {
59 return value
=== 'remove'
62 function isVideoAuthorValid (value
) {
63 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.AUTHOR
)
66 function isVideoDateValid (value
) {
67 return validator
.isDate(value
)
70 function isVideoDescriptionValid (value
) {
71 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
74 function isVideoDurationValid (value
) {
75 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
78 function isVideoMagnetUriValid (value
) {
79 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.MAGNET_URI
)
82 function isVideoNameValid (value
) {
83 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
86 function isVideoPodUrlValid (value
) {
87 return validator
.isURL(value
)
90 function isVideoTagsValid (tags
) {
91 return isArray(tags
) &&
92 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
93 tags
.every(function (tag
) {
94 return validator
.isAlphanumeric(tag
) &&
95 validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
99 function isVideoThumbnailValid (value
) {
100 return validator
.isBase64(value
) &&
101 validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
104 // ---------------------------------------------------------------------------
106 module
.exports
= customValidators
108 // ---------------------------------------------------------------------------