From 8a02bd0433b7101c5ea36e87a4edb63204d2adec Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 19 Oct 2017 09:43:01 +0200 Subject: Add pod list endpoint with pagination, sort... --- server/controllers/api/remote/pods.ts | 45 ++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'server/controllers/api/remote') diff --git a/server/controllers/api/remote/pods.ts b/server/controllers/api/remote/pods.ts index 69bbd4378..6f7b5f651 100644 --- a/server/controllers/api/remote/pods.ts +++ b/server/controllers/api/remote/pods.ts @@ -1,18 +1,34 @@ import * as express from 'express' import { database as db } from '../../../initializers/database' -import { checkSignature, signatureValidator } from '../../../middlewares' -import { PodSignature } from '../../../../shared' +import { + checkSignature, + signatureValidator, + setBodyHostPort, + remotePodsAddValidator +} from '../../../middlewares' +import { sendOwnedVideosToPod } 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 ) +remotePodsRouter.post('/list', remotePodsList) + +remotePodsRouter.post('/add', + setBodyHostPort, // We need to modify the host before running the validator! + remotePodsAddValidator, + addPods +) + // --------------------------------------------------------------------------- export { @@ -21,6 +37,29 @@ export { // --------------------------------------------------------------------------- +function addPods (req: express.Request, res: express.Response, next: express.NextFunction) { + const information = req.body + + const pod = db.Pod.build(information) + 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 remotePodsList (req: express.Request, res: express.Response, next: express.NextFunction) { + db.Pod.list() + .then(podsList => res.json(getFormattedObjects(podsList, podsList.length))) + .catch(err => next(err)) +} + function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { const signature: PodSignature = req.body.signature const host = signature.host -- cgit v1.2.3