auspice
Version:
Web app for visualizing pathogen evolution
34 lines (30 loc) • 1.25 kB
JavaScript
const queryString = require("query-string");
const parseNarrative = require('./parseNarrative').default;
const path = require("path");
const fs = require("fs");
const utils = require("../utils");
const setUpGetNarrativeHandler = ({narrativesPath}) => {
return async (req, res) => {
const prefix = queryString.parse(req.url.split('?')[1]).prefix || "";
const filename = prefix
.replace(/.+narratives\//, "") // remove the URL up to (& including) "narratives/"
.replace(/\/$/, "") // remove ending slash
.replace(/\//g, "_") // change slashes to underscores
.concat(".md"); // add .md suffix
const pathName = path.join(narrativesPath, filename);
utils.log("trying to access & parse local narrative file: " + pathName);
try {
const fileContents = fs.readFileSync(pathName, 'utf8');
const blocks = parseNarrative(fileContents);
res.send(JSON.stringify(blocks).replace(/</g, '\\u003c'));
utils.verbose("SUCCESS");
} catch (err) {
res.statusMessage = `Narratives couldn't be served -- ${err.message}`;
utils.warn(res.statusMessage);
res.status(500).end();
}
};
};
module.exports = {
setUpGetNarrativeHandler
};