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