X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fv1%2Fremote.js;h=7af9b7e84577b8aae6189c759ffd9e54991cf843;hb=fc51fde048f2c3ce1dd3e85f5528335040bae894;hp=ced8470d74dd960ef9fe69ea88ea2bbd90214b47;hpb=528a9efa8272532bbd0dafc35c3e05e57c50f61e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/v1/remote.js b/server/controllers/api/v1/remote.js index ced8470d7..7af9b7e84 100644 --- a/server/controllers/api/v1/remote.js +++ b/server/controllers/api/v1/remote.js @@ -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) }) }