X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fremote%2Fpods.ts;h=326eb61ac183c712176c0517bc28c178e9973a50;hb=343ad675f2a26c15b86150a9a3552e619d5d44f4;hp=6319957d3b7744f5c2e499f516e98398b728bad8;hpb=6fcd19ba737f1f5614a56c6925adb882dea43b8d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/remote/pods.ts b/server/controllers/api/remote/pods.ts index 6319957d3..326eb61ac 100644 --- a/server/controllers/api/remote/pods.ts +++ b/server/controllers/api/remote/pods.ts @@ -1,15 +1,35 @@ import * as express from 'express' import { database as db } from '../../../initializers/database' -import { checkSignature, signatureValidator } from '../../../middlewares' +import { + checkSignature, + signatureValidator, + setBodyHostPort, + remotePodsAddValidator, + asyncMiddleware +} from '../../../middlewares' +import { sendOwnedDataToPod } from '../../../lib' +import { getMyPublicCert, getFormattedObjects } from '../../../helpers' +import { CONFIG } from '../../../initializers' +import { PodInstance } from '../../../models' +import { PodSignature, Pod as FormattedPod } from '../../../../shared' const remotePodsRouter = express.Router() -// Post because this is a secured request remotePodsRouter.post('/remove', signatureValidator, checkSignature, - removePods + asyncMiddleware(removePods) +) + +remotePodsRouter.post('/list', + asyncMiddleware(remotePodsList) +) + +remotePodsRouter.post('/add', + setBodyHostPort, // We need to modify the host before running the validator! + remotePodsAddValidator, + asyncMiddleware(addPods) ) // --------------------------------------------------------------------------- @@ -20,13 +40,30 @@ export { // --------------------------------------------------------------------------- -function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { - const host = req.body.signature.host +async function addPods (req: express.Request, res: express.Response, next: express.NextFunction) { + const information = req.body + + const pod = db.Pod.build(information) + const podCreated = await pod.save() + + await sendOwnedDataToPod(podCreated.id) + + const cert = await getMyPublicCert() + return res.json({ cert, email: CONFIG.ADMIN.EMAIL }) +} + +async function remotePodsList (req: express.Request, res: express.Response, next: express.NextFunction) { + const pods = await db.Pod.list() + + return res.json(getFormattedObjects(pods, pods.length)) +} + +async function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { + const signature: PodSignature = req.body.signature + const host = signature.host + + const pod = await db.Pod.loadByHost(host) + await pod.destroy() - db.Pod.loadByHost(host) - .then(pod => { - return pod.destroy() - }) - .then(() => res.type('json').status(204).end()) - .catch(err => next(err)) + return res.type('json').status(204).end() }