]>
Commit | Line | Data |
---|---|---|
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 C |
41 | if (err) { |
42 | logger.error('Cannot read cert file.', { error: err }) | |
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.', { error: err }) | |
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) | |
81 | logger.info('%s pod removed.', url) | |
82 | res.sendStatus(204) | |
83 | }) | |
8c308c2b C |
84 | }) |
85 | } | |
86 | ||
c45f7f84 | 87 | function quitFriends (req, res, next) { |
c173e565 | 88 | friends.quitFriends(function (err) { |
c45f7f84 | 89 | if (err) return next(err) |
8c308c2b | 90 | |
c45f7f84 C |
91 | res.sendStatus(204) |
92 | }) | |
93 | } | |
8c308c2b | 94 | })() |