]>
Commit | Line | Data |
---|---|---|
1 | import * as express from 'express' | |
2 | ||
3 | import { database as db } from '../../../initializers/database' | |
4 | import { | |
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' | |
15 | ||
16 | const remotePodsRouter = express.Router() | |
17 | ||
18 | remotePodsRouter.post('/remove', | |
19 | signatureValidator, | |
20 | checkSignature, | |
21 | removePods | |
22 | ) | |
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 | ||
32 | // --------------------------------------------------------------------------- | |
33 | ||
34 | export { | |
35 | remotePodsRouter | |
36 | } | |
37 | ||
38 | // --------------------------------------------------------------------------- | |
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 | ||
63 | function removePods (req: express.Request, res: express.Response, next: express.NextFunction) { | |
64 | const signature: PodSignature = req.body.signature | |
65 | const host = signature.host | |
66 | ||
67 | db.Pod.loadByHost(host) | |
68 | .then(pod => pod.destroy()) | |
69 | .then(() => res.type('json').status(204).end()) | |
70 | .catch(err => next(err)) | |
71 | } |