aboutsummaryrefslogblamecommitdiffhomepage
path: root/server/helpers/customValidators.js
blob: 9c3ff38ef03d39ae9941c54b7da73e48c1450791 (plain) (tree)
1
2
3
4
5
6
7
8
            
 
                                                        
 
                                                      
                                                                     
 
                          





























                                                               

    
 


                                                 

    
 


                             
 









































                                                                           
                                                                              
 
                                 

                                                                              
'use strict'

const validator = require('express-validator').validator

const constants = require('../initializers/constants')
const VIDEOS_CONSTRAINTS_FIELDS = constants.VIDEOS_CONSTRAINTS_FIELDS

const customValidators = {
  exists: exists,
  isEachAddRemoteVideosValid: isEachAddRemoteVideosValid,
  isEachRemoveRemoteVideosValid: isEachRemoveRemoteVideosValid,
  isArray: isArray,
  isVideoAuthorValid: isVideoAuthorValid,
  isVideoDateValid: isVideoDateValid,
  isVideoDescriptionValid: isVideoDescriptionValid,
  isVideoDurationValid: isVideoDurationValid,
  isVideoMagnetUriValid: isVideoMagnetUriValid,
  isVideoNameValid: isVideoNameValid,
  isVideoPodUrlValid: isVideoPodUrlValid,
  isVideoTagsValid: isVideoTagsValid,
  isVideoThumbnailValid: isVideoThumbnailValid
}

function exists (value) {
  return value !== undefined && value !== null
}

function isEachAddRemoteVideosValid (videos) {
  return videos.every(function (video) {
    return isVideoAuthorValid(video.author) &&
           isVideoDateValid(video.createdDate) &&
           isVideoDescriptionValid(video.description) &&
           isVideoDurationValid(video.duration) &&
           isVideoMagnetUriValid(video.magnetUri) &&
           isVideoNameValid(video.name) &&
           isVideoPodUrlValid(video.podUrl) &&
           isVideoTagsValid(video.tags) &&
           isVideoThumbnailValid(video.thumbnailBase64)
  })
}

function isEachRemoveRemoteVideosValid (videos) {
  return videos.every(function (video) {
    return isVideoMagnetUriValid(video.magnetUri)
  })
}

function isArray (value) {
  return Array.isArray(value)
}

function isVideoAuthorValid (value) {
  return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.AUTHOR)
}

function isVideoDateValid (value) {
  return validator.isDate(value)
}

function isVideoDescriptionValid (value) {
  return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION)
}

function isVideoDurationValid (value) {
  return validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.DURATION)
}

function isVideoMagnetUriValid (value) {
  return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.MAGNET_URI)
}

function isVideoNameValid (value) {
  return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME)
}

function isVideoPodUrlValid (value) {
  return validator.isURL(value)
}

function isVideoTagsValid (tags) {
  return isArray(tags) &&
         validator.isInt(tags.length, VIDEOS_CONSTRAINTS_FIELDS.TAGS) &&
         tags.every(function (tag) {
           return validator.isAlphanumeric(tag) &&
                  validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG)
         })
}

function isVideoThumbnailValid (value) {
  return validator.isBase64(value) &&
         validator.isByteLength(value, VIDEOS_CONSTRAINTS_FIELDS.THUMBNAIL)
}

// ---------------------------------------------------------------------------

module.exports = customValidators

// ---------------------------------------------------------------------------