Files
nebula.js/commands/serve/lib/snapshot-router.js
2020-01-29 14:07:45 +01:00

59 lines
1.2 KiB
JavaScript

const express = require('express');
const bodyParser = require('body-parser');
module.exports = function router({ base, snapshotUrl, snapshooter }) {
const r = express.Router();
r.use(
bodyParser.json({
limit: '10mb',
})
);
// returns an existing image
r.get('/image/:id', (req, res) => {
const p = snapshooter.getStoredImage(req.params.id);
if (p) {
res.contentType('image/png');
res.end(p, 'binary');
} else {
res.sendStatus('404');
}
});
r.post('/capture', async (req, res) => {
try {
const key = await snapshooter.captureImageOfSnapshot(req.body);
res.send({
url: `${base}/image/${key}`,
});
} catch (e) {
console.error(e);
res.sendStatus('500');
}
});
// post snapshot
r.post('/snapshot', (req, res) => {
const key = snapshooter.storeSnapshot(req.body);
res.json({
url: `${snapshotUrl}?snapshot=${key}`,
});
});
r.get('/snapshot/:id', (req, res) => {
const p = snapshooter.getStoredSnapshot(req.params.id);
if (p) {
res.json(p);
} else {
res.sendStatus('404');
}
});
r.get('/snapshots', (req, res) => {
res.json(snapshooter.getStoredSnapshots());
});
return r;
};