From d285692708944de05a877b099771be22c580b1ce Mon Sep 17 00:00:00 2001 From: Karen Shaw Date: Tue, 2 Jun 2026 22:09:42 +0000 Subject: [PATCH] btoa base64 encoding is removed in thumbnail route --- api/src/handlers/get-thumbnail.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/api/src/handlers/get-thumbnail.ts b/api/src/handlers/get-thumbnail.ts index 034d4bb1..730fb0a1 100644 --- a/api/src/handlers/get-thumbnail.ts +++ b/api/src/handlers/get-thumbnail.ts @@ -12,7 +12,18 @@ import type { WorkSource, } from "../api/response/iiif/types.ts"; import type { OpenSearchGetResponse } from "../api/opensearch-types.ts"; -import { buildImageResourceId } from "../api/response/iiif/presentation-api/items.ts"; + +export function buildImageResourceId( + uri: string, + size = "!300,300", + region = "full", +): string { + return `${normalizeImageServiceId(uri)}/${region}/${size}/0/default.jpg`; +} + +export function normalizeImageServiceId(uri: string): string { + return uri.replace(/\/info\.json$/i, "").replace(/\/+$/, ""); +} function isImageFileSet(doc: OpenSearchGetResponse): boolean { return ( @@ -111,7 +122,7 @@ const getThumbnail = async ( }); } - return new Response(btoa(String.fromCharCode(...new Uint8Array(buf))), { + return new Response(buf, { status: resp.status, headers: { "content-type": resp.headers.get("content-type") ?? "image/jpeg",