]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/v1/pods.js
Update to standard 7. Goodbye snake_case, I used to love you
[github/Chocobozzz/PeerTube.git] / server / controllers / api / v1 / pods.js
1 'use strict'
2
3 const express = require('express')
4
5 const logger = require('../../../helpers/logger')
6 const friends = require('../../../lib/friends')
7 const middleware = require('../../../middlewares')
8 const cacheMiddleware = middleware.cache
9 const Pods = require('../../../models/pods')
10 const reqValidator = middleware.reqValidators.pods
11 const secureMiddleware = middleware.secure
12 const secureRequest = middleware.reqValidators.remote.secureRequest
13 const videos = require('../../../lib/videos')
14 const Videos = require('../../../models/videos')
15
16 const router = express.Router()
17
18 router.get('/', cacheMiddleware.cache(false), listPods)
19 router.post('/', reqValidator.podsAdd, cacheMiddleware.cache(false), addPods)
20 router.get('/makefriends', reqValidator.makeFriends, cacheMiddleware.cache(false), makeFriends)
21 router.get('/quitfriends', cacheMiddleware.cache(false), quitFriends)
22 // Post because this is a secured request
23 router.post('/remove', secureRequest, secureMiddleware.decryptBody, removePods)
24
25 // ---------------------------------------------------------------------------
26
27 module.exports = router
28
29 // ---------------------------------------------------------------------------
30
31 function addPods (req, res, next) {
32 const informations = req.body.data
33 Pods.add(informations, function (err) {
34 if (err) return next(err)
35
36 // Create the remote videos from the new pod
37 videos.createRemoteVideos(informations.videos, function (err) {
38 if (err) logger.error('Cannot create remote videos.', { error: err })
39 })
40
41 friends.getMyCertificate(function (err, cert) {
42 if (err) {
43 logger.error('Cannot read cert file.')
44 return next(err)
45 }
46
47 Videos.listOwned(function (err, videosList) {
48 if (err) {
49 logger.error('Cannot get the list of owned videos.')
50 return next(err)
51 }
52
53 res.json({ cert: cert, videos: videosList })
54 })
55 })
56 })
57 }
58
59 function listPods (req, res, next) {
60 Pods.list(function (err, podsList) {
61 if (err) return next(err)
62
63 res.json(podsList)
64 })
65 }
66
67 function makeFriends (req, res, next) {
68 friends.makeFriends(function (err) {
69 if (err) return next(err)
70
71 res.type('json').status(204).end()
72 })
73 }
74
75 function removePods (req, res, next) {
76 const url = req.body.signature.url
77 Pods.remove(url, function (err) {
78 if (err) return next(err)
79
80 Videos.listFromUrl(url, function (err, videosList) {
81 if (err) {
82 logger.error('Cannot list videos from url.', { error: err })
83 next(err)
84 }
85
86 videos.removeRemoteVideos(videosList, function (err) {
87 if (err) {
88 logger.error('Cannot remove remote videos.', { error: err })
89 next(err)
90 }
91
92 res.type('json').status(204).end()
93 })
94 })
95 })
96 }
97
98 function quitFriends (req, res, next) {
99 friends.quitFriends(function (err) {
100 if (err) return next(err)
101
102 res.type('json').status(204).end()
103 })
104 }