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
,
21 isVideoThumbnail64Valid: isVideoThumbnail64Valid
24 function exists (value
) {
25 return value
!== undefined && value
!== null
28 function isEachRemoteVideosValid (requests
) {
29 return requests
.every(function (request
) {
30 const video
= request
.data
32 isRequestTypeAddValid(request
.type
) &&
33 isVideoAuthorValid(video
.author
) &&
34 isVideoDateValid(video
.createdDate
) &&
35 isVideoDescriptionValid(video
.description
) &&
36 isVideoDurationValid(video
.duration
) &&
37 isVideoMagnetUriValid(video
.magnetUri
) &&
38 isVideoNameValid(video
.name
) &&
39 isVideoPodUrlValid(video
.podUrl
) &&
40 isVideoTagsValid(video
.tags
) &&
41 isVideoThumbnail64Valid(video
.thumbnailBase64
)
44 isRequestTypeRemoveValid(request
.type
) &&
45 isVideoNameValid(video
.name
) &&
46 isVideoMagnetUriValid(video
.magnetUri
)
51 function isArray (value
) {
52 return Array
.isArray(value
)
55 function isRequestTypeAddValid (value
) {
56 return value
=== 'add'
59 function isRequestTypeRemoveValid (value
) {
60 return value
=== 'remove'
63 function isVideoAuthorValid (value
) {
64 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.AUTHOR
)
67 function isVideoDateValid (value
) {
68 return validator
.isDate(value
)
71 function isVideoDescriptionValid (value
) {
72 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.DESCRIPTION
)
75 function isVideoDurationValid (value
) {
76 return validator
.isInt(value
+ '', VIDEOS_CONSTRAINTS_FIELDS
.DURATION
)
79 function isVideoMagnetUriValid (value
) {
80 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.MAGNET_URI
)
83 function isVideoNameValid (value
) {
84 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.NAME
)
87 function isVideoPodUrlValid (value
) {
88 // TODO: set options (TLD...)
89 return validator
.isURL(value
)
92 function isVideoTagsValid (tags
) {
93 return isArray(tags
) &&
94 validator
.isInt(tags
.length
, VIDEOS_CONSTRAINTS_FIELDS
.TAGS
) &&
95 tags
.every(function (tag
) {
96 return validator
.isAlphanumeric(tag
) &&
97 validator
.isLength(tag
, VIDEOS_CONSTRAINTS_FIELDS
.TAG
)
101 function isVideoThumbnailValid (value
) {
102 return validator
.isLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL
)
105 function isVideoThumbnail64Valid (value
) {
106 return validator
.isBase64(value
) &&
107 validator
.isByteLength(value
, VIDEOS_CONSTRAINTS_FIELDS
.THUMBNAIL64
)
110 // ---------------------------------------------------------------------------
112 module
.exports
= customValidators
114 // ---------------------------------------------------------------------------