Implement ETag logic for AWS and Cloudflare [#90] (#354)

This commit is contained in:
Brandon Liu
2024-02-07 11:46:05 +08:00
committed by GitHub
parent e86dd554be
commit 5b8627b0d8
2 changed files with 34 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
import {
Compression,
EtagMismatch,
PMTiles,
RangeResponse,
ResolvedValueCache,
@@ -63,12 +64,19 @@ class R2Source implements Source {
pmtiles_path(this.archiveName, this.env.PMTILES_PATH),
{
range: { offset: offset, length: length },
onlyIf: { etagMatches: etag },
}
);
if (!resp) {
throw new KeyNotFoundError("Archive not found");
}
const o = resp as R2ObjectBody;
if (!o.body) {
throw new EtagMismatch();
}
const a = await o.arrayBuffer();
return {
data: a,