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