diff --git a/lib/www/server/api/middleware/event/get/geojson.js b/lib/www/server/api/middleware/event/get/geojson.js index 5b98068..5fbf8e7 100644 --- a/lib/www/server/api/middleware/event/get/geojson.js +++ b/lib/www/server/api/middleware/event/get/geojson.js @@ -18,6 +18,10 @@ const geojson = async function (req, res, next) { return feature; }) }; + if ("download" in query || "d" in query) { + const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.geojson`; + res.set("Content-Disposition", `attachment; filename="${filename}"`); + } res.status(200).send(response); next(); } catch (err) { diff --git a/lib/www/server/api/middleware/event/get/html.js b/lib/www/server/api/middleware/event/get/html.js index fa67263..a398ca7 100644 --- a/lib/www/server/api/middleware/event/get/html.js +++ b/lib/www/server/api/middleware/event/get/html.js @@ -13,6 +13,11 @@ const html = async function (req, res, next) { const template = templates[0].template; const response = await render(seis, template); + + if ("download" in query || "d" in query) { + const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.html`; + res.set("Content-Disposition", `attachment; filename="${filename}"`); + } res.status(200).send(response); next(); } catch (err) { diff --git a/lib/www/server/api/middleware/event/get/json.js b/lib/www/server/api/middleware/event/get/json.js index 8988a31..3848f2e 100644 --- a/lib/www/server/api/middleware/event/get/json.js +++ b/lib/www/server/api/middleware/event/get/json.js @@ -6,6 +6,10 @@ const json = async function (req, res, next) { const query = req.query; query.sequence = req.params.sequence; const response = await event.list(req.params.project, query); + if ("download" in query || "d" in query) { + const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.json`; + res.set("Content-Disposition", `attachment; filename="${filename}"`); + } res.status(200).send(response); next(); } catch (err) { diff --git a/lib/www/server/api/middleware/event/get/pdf.js b/lib/www/server/api/middleware/event/get/pdf.js index 316b2a7..59a495c 100644 --- a/lib/www/server/api/middleware/event/get/pdf.js +++ b/lib/www/server/api/middleware/event/get/pdf.js @@ -26,6 +26,10 @@ const pdf = async function (req, res, next) { await fs.writeFile(fname, html); const pdf = Buffer.from(await url2pdf("file://"+fname), "base64"); + if ("download" in query || "d" in query) { + const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.pdf`; + res.set("Content-Disposition", `attachment; filename="${filename}"`); + } res.status(200).send(pdf); next(); } catch (err) { diff --git a/lib/www/server/api/middleware/event/get/seis.js b/lib/www/server/api/middleware/event/get/seis.js index 5d73862..655c81b 100644 --- a/lib/www/server/api/middleware/event/get/seis.js +++ b/lib/www/server/api/middleware/event/get/seis.js @@ -8,6 +8,10 @@ const seis = async function (req, res, next) { const events = await event.list(req.params.project, query); const sequences = await sequence.list(req.params.project, query); const response = transform(events, sequences, {projectId: req.params.project}); + if ("download" in query || "d" in query) { + const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.json`; + res.set("Content-Disposition", `attachment; filename="${filename}"`); + } res.status(200).send(response); next(); } catch (err) {