]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/controllers/api/v1/remoteVideos.js
Refractoring and add thumbnails support (without tests)
[github/Chocobozzz/PeerTube.git] / server / controllers / api / v1 / remoteVideos.js
CommitLineData
9f10b292 1'use strict'
8c308c2b 2
f0f5567b 3const express = require('express')
35f1c54e 4const map = require('lodash/map')
0b697522 5
f0f5567b
C
6const middleware = require('../../../middlewares')
7const secureMiddleware = middleware.secure
8const cacheMiddleware = middleware.cache
9const reqValidator = middleware.reqValidators.remote
cbe2f7c3
C
10const logger = require('../../../helpers/logger')
11const Videos = require('../../../models/videos')
12const videos = require('../../../lib/videos')
8c308c2b 13
f0f5567b 14const router = express.Router()
c45f7f84 15
9f10b292
C
16router.post('/add',
17 reqValidator.secureRequest,
18 secureMiddleware.decryptBody,
19 reqValidator.remoteVideosAdd,
20 cacheMiddleware.cache(false),
21 addRemoteVideos
22)
c45f7f84 23
9f10b292
C
24router.post('/remove',
25 reqValidator.secureRequest,
26 secureMiddleware.decryptBody,
27 reqValidator.remoteVideosRemove,
28 cacheMiddleware.cache(false),
29 removeRemoteVideo
30)
c45f7f84 31
9f10b292 32// ---------------------------------------------------------------------------
c45f7f84 33
9f10b292 34module.exports = router
c45f7f84 35
9f10b292 36// ---------------------------------------------------------------------------
c45f7f84 37
9f10b292 38function addRemoteVideos (req, res, next) {
cbe2f7c3
C
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 }
8c308c2b 45
cbe2f7c3 46 res.type('json').status(201).end()
9f10b292
C
47 })
48}
8c308c2b 49
9f10b292 50function removeRemoteVideo (req, res, next) {
cbe2f7c3 51 const fromUrl = req.body.signature.url
a4c15751 52 const magnetUris = map(req.body.data, 'magnetUri')
c173e565 53
cbe2f7c3
C
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 }
8c308c2b 59
cbe2f7c3
C
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 })
9f10b292
C
68 })
69}