]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/controllers/api/pods.ts
Add video channel tests
[github/Chocobozzz/PeerTube.git] / server / controllers / api / pods.ts
... / ...
CommitLineData
1import * as express from 'express'
2
3import { database as db } from '../../initializers/database'
4import { logger, getFormattedObjects } from '../../helpers'
5import {
6 makeFriends,
7 quitFriends,
8 removeFriend
9} from '../../lib'
10import {
11 authenticate,
12 ensureIsAdmin,
13 makeFriendsValidator,
14 setBodyHostsPort,
15 podRemoveValidator,
16 paginationValidator,
17 setPagination,
18 setPodsSort,
19 podsSortValidator
20} from '../../middlewares'
21import { PodInstance } from '../../models'
22
23const podsRouter = express.Router()
24
25podsRouter.get('/',
26 paginationValidator,
27 podsSortValidator,
28 setPodsSort,
29 setPagination,
30 listPods
31)
32podsRouter.post('/make-friends',
33 authenticate,
34 ensureIsAdmin,
35 makeFriendsValidator,
36 setBodyHostsPort,
37 makeFriendsController
38)
39podsRouter.get('/quit-friends',
40 authenticate,
41 ensureIsAdmin,
42 quitFriendsController
43)
44podsRouter.delete('/:id',
45 authenticate,
46 ensureIsAdmin,
47 podRemoveValidator,
48 removeFriendController
49)
50
51// ---------------------------------------------------------------------------
52
53export {
54 podsRouter
55}
56
57// ---------------------------------------------------------------------------
58
59function listPods (req: express.Request, res: express.Response, next: express.NextFunction) {
60 db.Pod.listForApi(req.query.start, req.query.count, req.query.sort)
61 .then(resultList => res.json(getFormattedObjects(resultList.data, resultList.total)))
62 .catch(err => next(err))
63}
64
65function makeFriendsController (req: express.Request, res: express.Response, next: express.NextFunction) {
66 const hosts = req.body.hosts as string[]
67
68 makeFriends(hosts)
69 .then(() => logger.info('Made friends!'))
70 .catch(err => logger.error('Could not make friends.', err))
71
72 // Don't wait the process that could be long
73 res.type('json').status(204).end()
74}
75
76function quitFriendsController (req: express.Request, res: express.Response, next: express.NextFunction) {
77 quitFriends()
78 .then(() => res.type('json').status(204).end())
79 .catch(err => next(err))
80}
81
82function removeFriendController (req: express.Request, res: express.Response, next: express.NextFunction) {
83 const pod = res.locals.pod as PodInstance
84
85 removeFriend(pod)
86 .then(() => res.type('json').status(204).end())
87 .catch(err => next(err))
88}