]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/api/v1/remote.js
reqValidators --> validators
[github/Chocobozzz/PeerTube.git] / server / controllers / api / v1 / remote.js
index ced8470d74dd960ef9fe69ea88ea2bbd90214b47..7af9b7e84577b8aae6189c759ffd9e54991cf843 100644 (file)
@@ -2,21 +2,21 @@
 
 const async = require('async')
 const express = require('express')
+const mongoose = require('mongoose')
 
 const middlewares = require('../../../middlewares')
 const secureMiddleware = middlewares.secure
-const reqValidator = middlewares.reqValidators.remote
+const validators = middlewares.validators.remote
 const logger = require('../../../helpers/logger')
-const Videos = require('../../../models/videos')
-const videos = require('../../../lib/videos')
 
 const router = express.Router()
+const Video = mongoose.model('Video')
 
 router.post('/videos',
-  reqValidator.signature,
-  reqValidator.dataToDecrypt,
+  validators.signature,
+  validators.dataToDecrypt,
   secureMiddleware.decryptBody,
-  reqValidator.remoteVideos,
+  validators.remoteVideos,
   remoteVideos
 )
 
@@ -33,48 +33,39 @@ function remoteVideos (req, res, next) {
   // We need to process in the same order to keep consistency
   // TODO: optimization
   async.eachSeries(requests, function (request, callbackEach) {
-    const video = request.data
+    const videoData = request.data
 
     if (request.type === 'add') {
-      addRemoteVideo(video, callbackEach)
+      addRemoteVideo(videoData, callbackEach)
     } else if (request.type === 'remove') {
-      removeRemoteVideo(video, fromUrl, callbackEach)
+      removeRemoteVideo(videoData, fromUrl, callbackEach)
     }
+  }, function (err) {
+    if (err) logger.error('Error managing remote videos.', { error: err })
   })
 
   // We don't need to keep the other pod waiting
   return res.type('json').status(204).end()
 }
 
-function addRemoteVideo (videoToCreate, callback) {
-  videos.createRemoteVideos([ videoToCreate ], function (err, remoteVideos) {
-    if (err) {
-      logger.error('Cannot create remote videos.', { error: err })
-      // Don't break the process
-    }
+function addRemoteVideo (videoToCreateData, callback) {
+  // Mongoose pre hook will automatically create the thumbnail on disk
+  videoToCreateData.thumbnail = videoToCreateData.thumbnailBase64
 
-    return callback()
-  })
+  const video = new Video(videoToCreateData)
+  video.save(callback)
 }
 
-function removeRemoteVideo (videoToRemove, fromUrl, callback) {
-  const magnetUris = [ videoToRemove.magnetUri ]
-
+function removeRemoteVideo (videoToRemoveData, fromUrl, callback) {
   // We need the list because we have to remove some other stuffs (thumbnail etc)
-  Videos.listFromUrlAndMagnets(fromUrl, magnetUris, function (err, videosList) {
+  Video.listByUrlAndMagnet(fromUrl, videoToRemoveData.magnetUri, function (err, videosList) {
     if (err) {
       logger.error('Cannot list videos from url and magnets.', { error: err })
-      // Don't break the process
-      return callback()
+      return callback(err)
     }
 
-    videos.removeRemoteVideos(videosList, function (err) {
-      if (err) {
-        logger.error('Cannot remove remote videos.', { error: err })
-        // Don't break the process
-      }
-
-      return callback()
-    })
+    async.each(videosList, function (video, callbackEach) {
+      video.remove(callbackEach)
+    }, callback)
   })
 }