diff --git a/controllers/params.mjs b/controllers/params.mjs new file mode 100644 index 0000000..db71d78 --- /dev/null +++ b/controllers/params.mjs @@ -0,0 +1,10 @@ +'use strict'; + +import Common from '../src/common.js'; + +/** + * Show all possible parameters for manifest URLs + */ +export default async function exposeParams() { + return await Common.getParamsFromFolders(); +} diff --git a/routes/index.mjs b/routes/index.mjs index 6d58d0f..af40abf 100644 --- a/routes/index.mjs +++ b/routes/index.mjs @@ -1,6 +1,7 @@ import generateManifest from '../controllers/manifest.mjs'; import generateCanvas from '../controllers/canvas.mjs'; import generateSequence from '../controllers/sequence.mjs'; +import exposeParams from '../controllers/params.mjs'; import express from 'express'; let router = express.Router(); @@ -26,5 +27,9 @@ router.get('/iiif/:manifestid/sequence/:name', async function(req, res) { res.json(sequence); }); +/* GET possible params for manifest responses */ +router.get('/params', async function(req, res) { + res.json(await exposeParams()); +}); -export default router; +export default router; \ No newline at end of file diff --git a/src/common.js b/src/common.js index 213faa2..5f561de 100644 --- a/src/common.js +++ b/src/common.js @@ -43,6 +43,24 @@ function extractDNOMetadata(imgFilename) { date: '', } } +/** + * Retrieves available image techniques + * for all papyruses based on folder contents + * @returns {object} + */ +Common.getParamsFromFolders = async function() { + let params = {}; + const papyri = await fs.promises.readdir(process.env.IMAGES_DIR); + + for (let p of papyri) { + params[p] = []; + for (let tech of await fs.promises.readdir(`${process.env.IMAGES_DIR}/${p}`)) { + params[p].push(tech.toLowerCase().replaceAll('_','-')); + } + } + + return params; +} /** * @param {string} manifestId */