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/pods.ts | 53 ++++++++++------------------------- server/controllers/api/remote/pods.ts | 45 +++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 41 deletions(-) (limited to 'server/controllers') diff --git a/server/controllers/api/pods.ts b/server/controllers/api/pods.ts index e1e8ff6ca..ec94efc35 100644 --- a/server/controllers/api/pods.ts +++ b/server/controllers/api/pods.ts @@ -1,39 +1,33 @@ import * as express from 'express' import { database as db } from '../../initializers/database' -import { CONFIG } from '../../initializers' +import { logger, getFormattedObjects } from '../../helpers' import { - logger, - getMyPublicCert, - getFormattedObjects -} from '../../helpers' -import { - sendOwnedVideosToPod, makeFriends, quitFriends, removeFriend } from '../../lib' import { - podsAddValidator, authenticate, ensureIsAdmin, makeFriendsValidator, - setBodyHostPort, setBodyHostsPort, - podRemoveValidator + podRemoveValidator, + paginationValidator, + setPagination, + setPodsSort, + podsSortValidator } from '../../middlewares' -import { - PodInstance -} from '../../models' -import { Pod as FormattedPod } from '../../../shared' +import { PodInstance } from '../../models' const podsRouter = express.Router() -podsRouter.get('/', listPods) -podsRouter.post('/', - setBodyHostPort, // We need to modify the host before running the validator! - podsAddValidator, - addPods +podsRouter.get('/', + paginationValidator, + podsSortValidator, + setPodsSort, + setPagination, + listPods ) podsRouter.post('/make-friends', authenticate, @@ -62,26 +56,9 @@ export { // --------------------------------------------------------------------------- -function addPods (req: express.Request, res: express.Response, next: express.NextFunction) { - const informations = req.body - - 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() - .then(podsList => res.json(getFormattedObjects(podsList, podsList.length))) + db.Pod.listForApi(req.query.start, req.query.count, req.query.sort) + .then(resultList => res.json(getFormattedObjects(resultList.data, resultList.total))) .catch(err => next(err)) } 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