Files
dougal-software/lib/www/server/api/middleware/sequence/get/binary.js
D. Berge 808c9987af Add binary format middleware for sequence data.
It responds to the MIME type:
application/dougal-map-sequence+octet-stream
2025-07-26 19:05:00 +02:00

62 lines
1.3 KiB
JavaScript

const { sequence } = require('../../../../lib/db');
const { MSGTYPE, encode } = require('../../../../lib/binary');
module.exports = async function (req, res, next) {
try {
const json = await sequence.get(req.params.project, req.params.sequence, req.query);
let msgType, geometry, error;
switch (req.query.geometry) {
case "F":
case "FINAL":
msgType = MSGTYPE.FINAL_OPT;
geometry = "geometryfinal";
error = "errorfinal";
break;
case "f":
case "final":
msgType = MSGTYPE.FINAL;
geometry = "geometryfinal";
error = "errorfinal";
break;
case "R":
case "RAW":
msgType = MSGTYPE.RAW_OPT;
geometry = "geometryraw";
error = "errorraw";
break;
case "r":
case "raw":
msgType = MSGTYPE.RAW;
geometry = "geometryraw";
error = "errorraw";
break;
case "P":
case "PREPLOT":
msgType = MSGTYPE.PREPLOT_RAWERROR_OPT;
geometry = "geometrypreplot";
error = ["errorfinal", "errorraw"];
break;
case "p":
case "preplot":
default:
msgType = MSGTYPE.PREPLOT;
geometry = "geometrypreplot";
break;
}
const endianness = req.query.endianness != "big";
const data = encode(json, geometry, error, msgType, endianness);
console.log("bundle", data);
res.status(200).send(Buffer.from(data));
next();
} catch (err) {
next(err);
}
};