]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/v1/remoteVideos.js
Refractoring and add thumbnails support (without tests)
[github/Chocobozzz/PeerTube.git] / server / controllers / api / v1 / remoteVideos.js
1 'use strict'
2
3 const express = require('express')
4 const map = require('lodash/map')
5
6 const middleware = require('../../../middlewares')
7 const secureMiddleware = middleware.secure
8 const cacheMiddleware = middleware.cache
9 const reqValidator = middleware.reqValidators.remote
10 const logger = require('../../../helpers/logger')
11 const Videos = require('../../../models/videos')
12 const videos = require('../../../lib/videos')
13
14 const router = express.Router()
15
16 router.post('/add',
17 reqValidator.secureRequest,
18 secureMiddleware.decryptBody,
19 reqValidator.remoteVideosAdd,
20 cacheMiddleware.cache(false),
21 addRemoteVideos
22 )
23
24 router.post('/remove',
25 reqValidator.secureRequest,
26 secureMiddleware.decryptBody,
27 reqValidator.remoteVideosRemove,
28 cacheMiddleware.cache(false),
29 removeRemoteVideo
30 )
31
32 // ---------------------------------------------------------------------------
33
34 module.exports = router
35
36 // ---------------------------------------------------------------------------
37
38 function addRemoteVideos (req, res, next) {
39 const videos_to_create = req.body.data
40 videos.createRemoteVideos(videos_to_create, function (err, remote_videos) {
41 if (err) {
42 logger.error('Cannot create remote videos.', { error: err })
43 return next(err)
44 }
45
46 res.type('json').status(201).end()
47 })
48 }
49
50 function removeRemoteVideo (req, res, next) {
51 const fromUrl = req.body.signature.url
52 const magnetUris = map(req.body.data, 'magnetUri')
53
54 Videos.listFromUrlAndMagnets(fromUrl, magnetUris, function (err, videos_list) {
55 if (err) {
56 logger.error('Cannot list videos from url and magnets.', { error: err })
57 return next(err)
58 }
59
60 videos.removeRemoteVideos(videos_list, function (err) {
61 if (err) {
62 logger.error('Cannot remove remote videos.', { error: err })
63 return next(err)
64 }
65
66 res.type('json').status(204).end()
67 })
68 })
69 }