X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fpods.ts;h=e1fa4b7e8b1d67c597b1f69bf3bb144ba694d102;hb=8094a8980265a0a28e508dbd7cf7c7029e6d98b6;hp=283105f6c39c8d4fac140167c2917016ae7b37c9;hpb=69818c9394366b954b6ba3bd697bd9d2b09f2a16;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/pods.ts b/server/controllers/api/pods.ts index 283105f6c..e1fa4b7e8 100644 --- a/server/controllers/api/pods.ts +++ b/server/controllers/api/pods.ts @@ -1,17 +1,17 @@ import * as express from 'express' -import { waterfall } from 'async' import { database as db } from '../../initializers/database' import { CONFIG } from '../../initializers' import { logger, getMyPublicCert, - getFormatedObjects + getFormattedObjects } from '../../helpers' import { sendOwnedVideosToPod, makeFriends, - quitFriends + quitFriends, + removeFriend } from '../../lib' import { podsAddValidator, @@ -19,11 +19,13 @@ import { ensureIsAdmin, makeFriendsValidator, setBodyHostPort, - setBodyHostsPort + setBodyHostsPort, + podRemoveValidator } from '../../middlewares' import { PodInstance } from '../../models' +import { Pod as FormattedPod } from '../../../shared' const podsRouter = express.Router() @@ -45,6 +47,12 @@ podsRouter.get('/quitfriends', ensureIsAdmin, quitFriendsController ) +podsRouter.delete('/:id', + authenticate, + ensureIsAdmin, + podRemoveValidator, + removeFriendController +) // --------------------------------------------------------------------------- @@ -57,65 +65,47 @@ export { function addPods (req: express.Request, res: express.Response, next: express.NextFunction) { const informations = req.body - waterfall([ - function addPod (callback) { - const pod = db.Pod.build(informations) - pod.save().asCallback(function (err, podCreated) { - // Be sure about the number of parameters for the callback - return callback(err, podCreated) - }) - }, - - function sendMyVideos (podCreated: PodInstance, callback) { - sendOwnedVideosToPod(podCreated.id) - - callback(null) - }, - - function fetchMyCertificate (callback) { - getMyPublicCert(function (err, cert) { - if (err) { - logger.error('Cannot read cert file.') - return callback(err) - } - - return callback(null, cert) - }) - } - ], function (err, cert) { - if (err) return next(err) - - return res.json({ cert: cert, email: CONFIG.ADMIN.EMAIL }) - }) + const pod = db.Pod.build(informations) + pod.save() + .then(podCreated => { + return sendOwnedVideosToPod(podCreated.id) + }) + .then(() => { + return getMyPublicCert() + }) + .then(cert => { + return res.json({ cert: cert, email: CONFIG.ADMIN.EMAIL }) + }) + .catch(err => next(err)) } function listPods (req: express.Request, res: express.Response, next: express.NextFunction) { - db.Pod.list(function (err, podsList) { - if (err) return next(err) - - res.json(getFormatedObjects(podsList, podsList.length)) - }) + db.Pod.list() + .then(podsList => res.json(getFormattedObjects(podsList, podsList.length))) + .catch(err => next(err)) } function makeFriendsController (req: express.Request, res: express.Response, next: express.NextFunction) { const hosts = req.body.hosts as string[] - makeFriends(hosts, function (err) { - if (err) { - logger.error('Could not make friends.', { error: err }) - return - } - - logger.info('Made friends!') - }) + makeFriends(hosts) + .then(() => logger.info('Made friends!')) + .catch(err => logger.error('Could not make friends.', err)) + // Don't wait the process that could be long res.type('json').status(204).end() } function quitFriendsController (req: express.Request, res: express.Response, next: express.NextFunction) { - quitFriends(function (err) { - if (err) return next(err) + quitFriends() + .then(() => res.type('json').status(204).end()) + .catch(err => next(err)) +} + +function removeFriendController (req: express.Request, res: express.Response, next: express.NextFunction) { + const pod = res.locals.pod as PodInstance - res.type('json').status(204).end() - }) + removeFriend(pod) + .then(() => (res.type('json').status(204).end())) + .catch(err => next(err)) }