diff --git a/api/src/api/response/iiif/canvas.js b/api/src/api/response/iiif/canvas.js new file mode 100644 index 00000000..7377b870 --- /dev/null +++ b/api/src/api/response/iiif/canvas.js @@ -0,0 +1,18 @@ +const { dcApiEndpoint, dcUrl } = require("../../../environment"); +const { transformError } = require("../error"); + +async function transform(response) { + if (response.statusCode === 200) { + const responseBody = JSON.parse(response.body); + return { + statusCode: 200, + headers: { + "content-type": "application/json", + }, + body: "IIIF canvas response not yet implemented", + }; + } + return transformError(response); +} + +module.exports = { transform }; \ No newline at end of file diff --git a/api/src/handlers/get-file-set-by-id.js b/api/src/handlers/get-file-set-by-id.js index 48d6e3e5..f38456f2 100644 --- a/api/src/handlers/get-file-set-by-id.js +++ b/api/src/handlers/get-file-set-by-id.js @@ -1,6 +1,8 @@ const { wrap } = require("./middleware"); const { getFileSet } = require("../api/opensearch"); const opensearchResponse = require("../api/response/opensearch"); +const canvasResponse = require("../api/response/iiif/canvas"); +const { transform } = require("lodash"); /** * A simple function to get a FileSet by id @@ -11,5 +13,18 @@ exports.handler = wrap(async (event) => { event.userToken.isSuperUser() || event.userToken.isReadingRoom(); const allowUnpublished = event.userToken.isSuperUser(); const esResponse = await getFileSet(id, { allowPrivate, allowUnpublished }); + const as = event.queryStringParameters?.as; + + + if (as && as === "iiif") { + return await canvasResponse.transform(esResponse, { + allowPrivate, + allowUnpublished, + }); + } + + + + return await opensearchResponse.transform(esResponse); -}); +}); \ No newline at end of file