]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/custom-validators/remote/videos.ts
Move video file metadata in their own table
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / remote / videos.ts
index 4b904d011a85328d084d08fdbd3f33326a6b78ef..091cd2186b6e263d9e51a5484cad15e8d4330f24 100644 (file)
@@ -9,7 +9,7 @@ import { isArray } from '../misc'
 import {
   isVideoAuthorValid,
   isVideoThumbnailDataValid,
-  isVideoRemoteIdValid,
+  isVideoUUIDValid,
   isVideoAbuseReasonValid,
   isVideoAbuseReporterUsernameValid,
   isVideoViewsValid,
@@ -23,17 +23,18 @@ import {
   isVideoNSFWValid,
   isVideoDescriptionValid,
   isVideoDurationValid,
-  isVideoInfoHashValid,
+  isVideoFileInfoHashValid,
   isVideoNameValid,
   isVideoTagsValid,
-  isVideoExtnameValid
+  isVideoFileExtnameValid,
+  isVideoFileResolutionValid
 } from '../videos'
 
 const ENDPOINT_ACTIONS = REQUEST_ENDPOINT_ACTIONS[REQUEST_ENDPOINTS.VIDEOS]
 
-function isEachRemoteRequestVideosValid (requests) {
+function isEachRemoteRequestVideosValid (requests: any[]) {
   return isArray(requests) &&
-    requests.every(function (request) {
+    requests.every(request => {
       const video = request.data
 
       if (!video) return false
@@ -50,42 +51,42 @@ function isEachRemoteRequestVideosValid (requests) {
       ) ||
       (
         isRequestTypeRemoveValid(request.type) &&
-        isVideoRemoteIdValid(video.remoteId)
+        isVideoUUIDValid(video.uuid)
       ) ||
       (
         isRequestTypeReportAbuseValid(request.type) &&
-        isVideoRemoteIdValid(request.data.videoRemoteId) &&
+        isVideoUUIDValid(request.data.videoUUID) &&
         isVideoAbuseReasonValid(request.data.reportReason) &&
         isVideoAbuseReporterUsernameValid(request.data.reporterUsername)
       )
     })
 }
 
-function isEachRemoteRequestVideosQaduValid (requests) {
+function isEachRemoteRequestVideosQaduValid (requests: any[]) {
   return isArray(requests) &&
-    requests.every(function (request) {
+    requests.every(request => {
       const video = request.data
 
       if (!video) return false
 
       return (
-        isVideoRemoteIdValid(video.remoteId) &&
-        (has(video, 'views') === false || isVideoViewsValid) &&
-        (has(video, 'likes') === false || isVideoLikesValid) &&
-        (has(video, 'dislikes') === false || isVideoDislikesValid)
+        isVideoUUIDValid(video.uuid) &&
+        (has(video, 'views') === false || isVideoViewsValid(video.views)) &&
+        (has(video, 'likes') === false || isVideoLikesValid(video.likes)) &&
+        (has(video, 'dislikes') === false || isVideoDislikesValid(video.dislikes))
       )
     })
 }
 
-function isEachRemoteRequestVideosEventsValid (requests) {
+function isEachRemoteRequestVideosEventsValid (requests: any[]) {
   return isArray(requests) &&
-    requests.every(function (request) {
+    requests.every(request => {
       const eventData = request.data
 
       if (!eventData) return false
 
       return (
-        isVideoRemoteIdValid(eventData.remoteId) &&
+        isVideoUUIDValid(eventData.uuid) &&
         values(REQUEST_VIDEO_EVENT_TYPES).indexOf(eventData.eventType) !== -1 &&
         isVideoEventCountValid(eventData.count)
       )
@@ -100,9 +101,19 @@ export {
   isEachRemoteRequestVideosEventsValid
 }
 
+declare global {
+  namespace ExpressValidator {
+    export interface Validator {
+      isEachRemoteRequestVideosValid,
+      isEachRemoteRequestVideosQaduValid,
+      isEachRemoteRequestVideosEventsValid
+    }
+  }
+}
+
 // ---------------------------------------------------------------------------
 
-function isCommonVideoAttributesValid (video) {
+function isCommonVideoAttributesValid (video: any) {
   return isVideoDateValid(video.createdAt) &&
          isVideoDateValid(video.updatedAt) &&
          isVideoCategoryValid(video.category) &&
@@ -111,28 +122,36 @@ function isCommonVideoAttributesValid (video) {
          isVideoNSFWValid(video.nsfw) &&
          isVideoDescriptionValid(video.description) &&
          isVideoDurationValid(video.duration) &&
-         isVideoInfoHashValid(video.infoHash) &&
          isVideoNameValid(video.name) &&
          isVideoTagsValid(video.tags) &&
-         isVideoRemoteIdValid(video.remoteId) &&
-         isVideoExtnameValid(video.extname) &&
+         isVideoUUIDValid(video.uuid) &&
          isVideoViewsValid(video.views) &&
          isVideoLikesValid(video.likes) &&
-         isVideoDislikesValid(video.dislikes)
+         isVideoDislikesValid(video.dislikes) &&
+         isArray(video.files) &&
+         video.files.every(videoFile => {
+           if (!videoFile) return false
+
+           return (
+             isVideoFileInfoHashValid(videoFile.infoHash) &&
+             isVideoFileExtnameValid(videoFile.extname) &&
+             isVideoFileResolutionValid(videoFile.resolution)
+           )
+         })
 }
 
-function isRequestTypeAddValid (value) {
+function isRequestTypeAddValid (value: string) {
   return value === ENDPOINT_ACTIONS.ADD
 }
 
-function isRequestTypeUpdateValid (value) {
+function isRequestTypeUpdateValid (value: string) {
   return value === ENDPOINT_ACTIONS.UPDATE
 }
 
-function isRequestTypeRemoveValid (value) {
+function isRequestTypeRemoveValid (value: string) {
   return value === ENDPOINT_ACTIONS.REMOVE
 }
 
-function isRequestTypeReportAbuseValid (value) {
+function isRequestTypeReportAbuseValid (value: string) {
   return value === ENDPOINT_ACTIONS.REPORT_ABUSE
 }