From 9e85f0b996a73e973b5c21b24826409f4eac93c6 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Fri, 9 Jan 2026 22:43:31 +1300 Subject: [PATCH] feat(05-01): create image serving API endpoint Co-Authored-By: Claude Opus 4.5 --- src/app/api/images/[id]/route.ts | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/app/api/images/[id]/route.ts diff --git a/src/app/api/images/[id]/route.ts b/src/app/api/images/[id]/route.ts new file mode 100644 index 00000000..ec840ed3 --- /dev/null +++ b/src/app/api/images/[id]/route.ts @@ -0,0 +1,41 @@ +/** + * Image Serving API Endpoint + * + * Serves temporarily stored images via URL for external providers. + * Images are stored in memory and should be cleaned up by callers after use. + * + * GET /api/images/[id] - Retrieve stored image by ID + */ + +import { NextRequest, NextResponse } from "next/server"; +import { getImage } from "@/lib/images/store"; + +/** + * GET handler - serve stored image + */ +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ id: string }> } +): Promise { + const { id } = await params; + + const image = getImage(id); + + if (!image) { + return NextResponse.json( + { error: "Image not found" }, + { status: 404 } + ); + } + + // Convert Buffer to Uint8Array for NextResponse compatibility + const uint8Array = new Uint8Array(image.data); + + return new NextResponse(uint8Array, { + status: 200, + headers: { + "Content-Type": image.mimeType, + "Cache-Control": "no-store", + }, + }); +}