Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
54 lines (46 loc) · 1.45 KB
/
Copy pathindex.js
File metadata and controls
54 lines (46 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const Restify = require("restify");
const SwaggerUI = require("swagger-ui-restify");
const errs = require('restify-errors');
const debug = require("debug")("probe");
const ffmpeg = require("fluent-ffmpeg");
const apiDocument = require("./api.json");
let server = Restify.createServer();
server.use(Restify.plugins.queryParser());
server.use(Restify.plugins.bodyParser());
server.get("/healthcheck", (req, res, next) => {
debug(`req.url=${req.url}`);
res.send(200);
next();
});
const options = {
customCss: ".swagger-ui .topbar { background-color: #61B5E5 }"
};
server.get("/*", ...SwaggerUI.serve);
// swagger-ui-restify returns a (req, res) handler that is not async, which restify 12 rejects
const swaggerSetup = SwaggerUI.setup(apiDocument, options);
server.get("/", (req, res, next) => {
swaggerSetup(req, res);
next();
});
server.post("/api", (req, res, next) => {
debug(`req.url=${req.url}`);
debug("req.body=%o", req.body);
if (req.body) {
try {
const mediaLocator = req.body.medialocator;
ffmpeg.ffprobe(mediaLocator, (err, metadata) => {
res.send(200, metadata);
next();
});
} catch (errObj) {
debug("Error: %o", errObj);
const err = new errs.InternalServerError(errObj.message);
next(err);
}
} else {
next(new errs.InvalidContentError("Missing Request Body"));
}
});
server.listen(process.env.PORT || 8080, () => {
debug(`${server.name} listening at ${server.url}`);
});