From f457724da138f6accdfa7f83ec21d88cebbb1cf6 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Tue, 22 Nov 2022 14:43:15 +0800 Subject: [PATCH] pass HTTP metadata in S3/R2 Source impls --- js/index.ts | 2 ++ serverless/aws/src/index.ts | 9 +++++++-- serverless/cloudflare/src/index.ts | 7 ++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/js/index.ts b/js/index.ts index 10fae3b..822d6d2 100644 --- a/js/index.ts +++ b/js/index.ts @@ -866,6 +866,8 @@ export class PMTiles { d_l = entry.length; } } else { + // TODO: We should in fact return a valid RangeResponse + // with empty data, but filled in cache control / expires headers return undefined; } } diff --git a/serverless/aws/src/index.ts b/serverless/aws/src/index.ts index 163ba0b..05403ed 100644 --- a/serverless/aws/src/index.ts +++ b/serverless/aws/src/index.ts @@ -100,7 +100,12 @@ class S3Source implements Source { const arr = await resp.Body!.transformToByteArray(); - return { data: arr.buffer }; + return { + data: arr.buffer, + etag: resp.ETag, + expires: resp.Expires?.toISOString(), + cacheControl: resp.CacheControl, + }; } } @@ -156,7 +161,7 @@ export const handler = async ( // TODO: metadata and TileJSON if (process.env.CORS) { - headers['Access-Control-Allow-Origin'] = process.env.CORS; + headers["Access-Control-Allow-Origin"] = process.env.CORS; } const source = new S3Source(name); diff --git a/serverless/cloudflare/src/index.ts b/serverless/cloudflare/src/index.ts index 0144bfe..e3b26a4 100644 --- a/serverless/cloudflare/src/index.ts +++ b/serverless/cloudflare/src/index.ts @@ -109,7 +109,12 @@ class R2Source implements Source { } const o = resp as R2ObjectBody; const a = await o.arrayBuffer(); - return { data: a, etag: o.etag }; + return { + data: a, + etag: o.etag, + cacheControl: o.httpMetadata?.cacheControl, + expires: o.httpMetadata?.cacheExpiry?.toISOString(), + }; } }