]>
Commit | Line | Data |
---|---|---|
9f10b292 | 1 | 'use strict' |
8c308c2b | 2 | |
f0f5567b C |
3 | const express = require('express') |
4 | const fs = require('fs') | |
5 | ||
6 | const logger = require('../../../helpers/logger') | |
7 | const friends = require('../../../lib/friends') | |
8 | const middleware = require('../../../middlewares') | |
9 | const cacheMiddleware = middleware.cache | |
10 | const peertubeCrypto = require('../../../helpers/peertubeCrypto') | |
11 | const Pods = require('../../../models/pods') | |
12 | const reqValidator = middleware.reqValidators.pods | |
13 | const secureMiddleware = middleware.secure | |
14 | const secureRequest = middleware.reqValidators.remote.secureRequest | |
15 | const Videos = require('../../../models/videos') | |
16 | ||
17 | const router = express.Router() | |
8c308c2b | 18 | |
9f10b292 C |
19 | router.get('/', cacheMiddleware.cache(false), listPods) |
20 | router.post('/', reqValidator.podsAdd, cacheMiddleware.cache(false), addPods) | |
21 | router.get('/makefriends', reqValidator.makeFriends, cacheMiddleware.cache(false), makeFriends) | |
22 | router.get('/quitfriends', cacheMiddleware.cache(false), quitFriends) | |
23 | // Post because this is a secured request | |
24 | router.post('/remove', secureRequest, secureMiddleware.decryptBody, removePods) | |
c45f7f84 | 25 | |
9f10b292 | 26 | // --------------------------------------------------------------------------- |
c45f7f84 | 27 | |
9f10b292 | 28 | module.exports = router |
c45f7f84 | 29 | |
9f10b292 | 30 | // --------------------------------------------------------------------------- |
8c308c2b | 31 | |
9f10b292 | 32 | function 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 |
57 | function 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 |
65 | function 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 | 73 | function 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 |
87 | function 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 | } |