]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/v1/remote.js
ced8470d74dd960ef9fe69ea88ea2bbd90214b47
3 const async
= require('async')
4 const express
= require('express')
6 const middlewares
= require('../../../middlewares')
7 const secureMiddleware
= middlewares
.secure
8 const reqValidator
= middlewares
.reqValidators
.remote
9 const logger
= require('../../../helpers/logger')
10 const Videos
= require('../../../models/videos')
11 const videos
= require('../../../lib/videos')
13 const router
= express
.Router()
15 router
.post('/videos',
16 reqValidator
.signature
,
17 reqValidator
.dataToDecrypt
,
18 secureMiddleware
.decryptBody
,
19 reqValidator
.remoteVideos
,
23 // ---------------------------------------------------------------------------
25 module
.exports
= router
27 // ---------------------------------------------------------------------------
29 function remoteVideos (req
, res
, next
) {
30 const requests
= req
.body
.data
31 const fromUrl
= req
.body
.signature
.url
33 // We need to process in the same order to keep consistency
35 async
.eachSeries(requests
, function (request
, callbackEach
) {
36 const video
= request
.data
38 if (request
.type
=== 'add') {
39 addRemoteVideo(video
, callbackEach
)
40 } else if (request
.type
=== 'remove') {
41 removeRemoteVideo(video
, fromUrl
, callbackEach
)
45 // We don't need to keep the other pod waiting
46 return res
.type('json').status(204).end()
49 function addRemoteVideo (videoToCreate
, callback
) {
50 videos
.createRemoteVideos([ videoToCreate
], function (err
, remoteVideos
) {
52 logger
.error('Cannot create remote videos.', { error: err
})
53 // Don't break the process
60 function removeRemoteVideo (videoToRemove
, fromUrl
, callback
) {
61 const magnetUris
= [ videoToRemove
.magnetUri
]
63 // We need the list because we have to remove some other stuffs (thumbnail etc)
64 Videos
.listFromUrlAndMagnets(fromUrl
, magnetUris
, function (err
, videosList
) {
66 logger
.error('Cannot list videos from url and magnets.', { error: err
})
67 // Don't break the process
71 videos
.removeRemoteVideos(videosList
, function (err
) {
73 logger
.error('Cannot remove remote videos.', { error: err
})
74 // Don't break the process