diff options
Diffstat (limited to 'server/controllers/api/remote/pods.ts')
-rw-r--r-- | server/controllers/api/remote/pods.ts | 45 |
1 files changed, 42 insertions, 3 deletions
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 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | 2 | ||
3 | import { database as db } from '../../../initializers/database' | 3 | import { database as db } from '../../../initializers/database' |
4 | import { checkSignature, signatureValidator } from '../../../middlewares' | 4 | import { |
5 | import { PodSignature } from '../../../../shared' | 5 | checkSignature, |
6 | signatureValidator, | ||
7 | setBodyHostPort, | ||
8 | remotePodsAddValidator | ||
9 | } from '../../../middlewares' | ||
10 | import { sendOwnedVideosToPod } from '../../../lib' | ||
11 | import { getMyPublicCert, getFormattedObjects } from '../../../helpers' | ||
12 | import { CONFIG } from '../../../initializers' | ||
13 | import { PodInstance } from '../../../models' | ||
14 | import { PodSignature, Pod as FormattedPod } from '../../../../shared' | ||
6 | 15 | ||
7 | const remotePodsRouter = express.Router() | 16 | const remotePodsRouter = express.Router() |
8 | 17 | ||
9 | // Post because this is a secured request | ||
10 | remotePodsRouter.post('/remove', | 18 | remotePodsRouter.post('/remove', |
11 | signatureValidator, | 19 | signatureValidator, |
12 | checkSignature, | 20 | checkSignature, |
13 | removePods | 21 | removePods |
14 | ) | 22 | ) |
15 | 23 | ||
24 | remotePodsRouter.post('/list', remotePodsList) | ||
25 | |||
26 | remotePodsRouter.post('/add', | ||
27 | setBodyHostPort, // We need to modify the host before running the validator! | ||
28 | remotePodsAddValidator, | ||
29 | addPods | ||
30 | ) | ||
31 | |||
16 | // --------------------------------------------------------------------------- | 32 | // --------------------------------------------------------------------------- |
17 | 33 | ||
18 | export { | 34 | export { |
@@ -21,6 +37,29 @@ export { | |||
21 | 37 | ||
22 | // --------------------------------------------------------------------------- | 38 | // --------------------------------------------------------------------------- |
23 | 39 | ||
40 | function addPods (req: express.Request, res: express.Response, next: express.NextFunction) { | ||
41 | const information = req.body | ||
42 | |||
43 | const pod = db.Pod.build(information) | ||
44 | pod.save() | ||
45 | .then(podCreated => { | ||
46 | return sendOwnedVideosToPod(podCreated.id) | ||
47 | }) | ||
48 | .then(() => { | ||
49 | return getMyPublicCert() | ||
50 | }) | ||
51 | .then(cert => { | ||
52 | return res.json({ cert: cert, email: CONFIG.ADMIN.EMAIL }) | ||
53 | }) | ||
54 | .catch(err => next(err)) | ||
55 | } | ||
56 | |||
57 | function remotePodsList (req: express.Request, res: express.Response, next: express.NextFunction) { | ||
58 | db.Pod.list() | ||
59 | .then(podsList => res.json(getFormattedObjects<FormattedPod, PodInstance>(podsList, podsList.length))) | ||
60 | .catch(err => next(err)) | ||
61 | } | ||
62 | |||
24 | function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { | 63 | function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { |
25 | const signature: PodSignature = req.body.signature | 64 | const signature: PodSignature = req.body.signature |
26 | const host = signature.host | 65 | const host = signature.host |