From 75ce4bb01270f0652625fad0d3c7bc5fdc147fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Tue, 17 Oct 2023 14:54:20 +0200 Subject: [PATCH] Support sequence URLs --- controllers/sequence.mjs | 26 ++++++++++++++++++++++++++ routes/index.mjs | 9 +++++++++ 2 files changed, 35 insertions(+) create mode 100644 controllers/sequence.mjs diff --git a/controllers/sequence.mjs b/controllers/sequence.mjs new file mode 100644 index 0000000..9f6de31 --- /dev/null +++ b/controllers/sequence.mjs @@ -0,0 +1,26 @@ +'use strict'; + +import Manifest from '../src/Manifest.js'; +import Common from '../src/common.js'; + +/** + * Generate a sequence object to serve + * @param {string} manifestId + * @param {string | int} name + */ +export default async function generateSequence(manifestId, name) { + const IIIF_API_VERSION = process.env.IIIF_API_VERSION; + const BASE_URL = process.env.BASE_URL; + + let manifest = new Manifest(IIIF_API_VERSION, BASE_URL); + manifest.generateID(manifestId); + + manifest = await Common.populateCanvases( + manifest, + await Common.getImageList(manifestId), + manifestId + ); + + return manifest.toObject().sequences[name]; +} + diff --git a/routes/index.mjs b/routes/index.mjs index eac26a3..6d58d0f 100644 --- a/routes/index.mjs +++ b/routes/index.mjs @@ -1,5 +1,6 @@ import generateManifest from '../controllers/manifest.mjs'; import generateCanvas from '../controllers/canvas.mjs'; +import generateSequence from '../controllers/sequence.mjs'; import express from 'express'; let router = express.Router(); @@ -18,4 +19,12 @@ router.get('/iiif/:manifestid/canvas/:name', async function(req, res) { res.json(canvas); }); +/* GET sequence JSON */ +router.get('/iiif/:manifestid/sequence/:name', async function(req, res) { + const sequence = await generateSequence(req.params.manifestid, req.params.name) + res.set('Access-Control-Allow-Origin', '*'); + res.json(sequence); +}); + + export default router;