]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/custom-validators/misc.ts
Check live duration and size
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / misc.ts
index f72513c1c643cc193baa4f463d22e718b4145fbc..61c03f0c978fa947e6494452333fa3496aaade56 100644 (file)
@@ -1,5 +1,5 @@
 import 'multer'
-import * as validator from 'validator'
+import validator from 'validator'
 import { sep } from 'path'
 
 function exists (value: any) {
@@ -9,7 +9,7 @@ function exists (value: any) {
 function isSafePath (p: string) {
   return exists(p) &&
     (p + '').split(sep).every(part => {
-      return [ '', '.', '..' ].includes(part) === false
+      return [ '..' ].includes(part) === false
     })
 }
 
@@ -45,10 +45,26 @@ function isBooleanValid (value: any) {
   return typeof value === 'boolean' || (typeof value === 'string' && validator.isBoolean(value))
 }
 
+function isIntOrNull (value: any) {
+  return value === null || validator.isInt('' + value)
+}
+
 function toIntOrNull (value: string) {
-  if (value === 'null') return null
+  const v = toValueOrNull(value)
+
+  if (v === null || v === undefined) return v
+  if (typeof v === 'number') return v
+
+  return validator.toInt('' + v)
+}
+
+function toBooleanOrNull (value: any) {
+  const v = toValueOrNull(value)
+
+  if (v === null || v === undefined) return v
+  if (typeof v === 'boolean') return v
 
-  return validator.toInt(value)
+  return validator.toBoolean('' + v)
 }
 
 function toValueOrNull (value: string) {
@@ -82,13 +98,13 @@ function isFileValid (
   if (isArray(files)) return optional
 
   // Should have a file
-  const fileArray = files[ field ]
+  const fileArray = files[field]
   if (!fileArray || fileArray.length === 0) {
     return optional
   }
 
   // The file should exist
-  const file = fileArray[ 0 ]
+  const file = fileArray[0]
   if (!file || !file.originalname) return false
 
   // Check size
@@ -104,12 +120,14 @@ export {
   isArrayOf,
   isNotEmptyIntArray,
   isArray,
+  isIntOrNull,
   isIdValid,
   isSafePath,
   isUUIDValid,
   isIdOrUUIDValid,
   isDateValid,
   toValueOrNull,
+  toBooleanOrNull,
   isBooleanValid,
   toIntOrNull,
   toArray,