]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - controllers/api/v1/pods.js
Error handling mini refractoring
[github/Chocobozzz/PeerTube.git] / controllers / api / v1 / pods.js
1 ;(function () {
2 'use strict'
3
4 var express = require('express')
5 var fs = require('fs')
6
7 var logger = require('../../../helpers/logger')
8 var friends = require('../../../lib/friends')
9 var middleware = require('../../../middlewares')
10 var cacheMiddleware = middleware.cache
11 var peertubeCrypto = require('../../../helpers/peertubeCrypto')
12 var Pods = require('../../../models/pods')
13 var reqValidator = middleware.reqValidators.pods
14 var secureMiddleware = middleware.secure
15 var secureRequest = middleware.reqValidators.remote.secureRequest
16 var Videos = require('../../../models/videos')
17
18 var router = express.Router()
19
20 router.get('/', cacheMiddleware.cache(false), listPods)
21 router.post('/', reqValidator.podsAdd, cacheMiddleware.cache(false), addPods)
22 router.get('/makefriends', reqValidator.makeFriends, cacheMiddleware.cache(false), makeFriends)
23 router.get('/quitfriends', cacheMiddleware.cache(false), quitFriends)
24 // Post because this is a secured request
25 router.post('/remove', secureRequest, secureMiddleware.decryptBody, removePods)
26
27 // ---------------------------------------------------------------------------
28
29 module.exports = router
30
31 // ---------------------------------------------------------------------------
32
33 function addPods (req, res, next) {
34 var informations = req.body.data
35 Pods.add(informations, function (err) {
36 if (err) return next(err)
37
38 Videos.addRemotes(informations.videos)
39
40 fs.readFile(peertubeCrypto.getCertDir() + 'peertube.pub', 'utf8', function (err, cert) {
41 if (err) {
42 logger.error('Cannot read cert file.')
43 return next(err)
44 }
45
46 Videos.listOwned(function (err, videos_list) {
47 if (err) {
48 logger.error('Cannot get the list of owned videos.')
49 return next(err)
50 }
51
52 res.json({ cert: cert, videos: videos_list })
53 })
54 })
55 })
56 }
57
58 function listPods (req, res, next) {
59 Pods.list(function (err, pods_list) {
60 if (err) return next(err)
61
62 res.json(pods_list)
63 })
64 }
65
66 function makeFriends (req, res, next) {
67 friends.makeFriends(function (err) {
68 if (err) return next(err)
69
70 res.sendStatus(204)
71 })
72 }
73
74 function removePods (req, res, next) {
75 var url = req.body.signature.url
76 Pods.remove(url, function (err) {
77 if (err) return next(err)
78
79 Videos.removeAllRemotesOf(url, function (err) {
80 if (err) logger.error('Cannot remove all remote videos of %s.', url)
81 else logger.info('%s pod removed.', url)
82
83 res.sendStatus(204)
84 })
85 })
86 }
87
88 function quitFriends (req, res, next) {
89 friends.quitFriends(function (err) {
90 if (err) return next(err)
91
92 res.sendStatus(204)
93 })
94 }
95 })()