refactor: early return (#389)

* refactor: early return

Undents all the code below it 1 level. Readability win.

---------

Co-authored-by: Brandon Liu <bdon@bdon.org>
This commit is contained in:
Niels Bom
2024-04-26 06:41:40 +02:00
committed by GitHub
parent 3b5ab6b7ac
commit 658c75b073

View File

@@ -101,124 +101,124 @@ export default {
const cache = caches.default; const cache = caches.default;
if (ok) { if (!ok) {
let allowedOrigin = ""; return new Response("Invalid URL", { status: 404 });
if (typeof env.ALLOWED_ORIGINS !== "undefined") { }
for (const o of env.ALLOWED_ORIGINS.split(",")) {
if (o === request.headers.get("Origin") || o === "*") { let allowedOrigin = "";
allowedOrigin = o; if (typeof env.ALLOWED_ORIGINS !== "undefined") {
} for (const o of env.ALLOWED_ORIGINS.split(",")) {
if (o === request.headers.get("Origin") || o === "*") {
allowedOrigin = o;
} }
} }
const cached = await cache.match(request.url);
if (cached) {
const respHeaders = new Headers(cached.headers);
if (allowedOrigin)
respHeaders.set("Access-Control-Allow-Origin", allowedOrigin);
respHeaders.set("Vary", "Origin");
return new Response(cached.body, {
headers: respHeaders,
status: cached.status,
});
}
const cacheableResponse = (
body: ArrayBuffer | string | undefined,
cacheableHeaders: Headers,
status: number
) => {
cacheableHeaders.set(
"Cache-Control",
`max-age=${env.CACHE_MAX_AGE || 86400}`
);
const cacheable = new Response(body, {
headers: cacheableHeaders,
status: status,
});
ctx.waitUntil(cache.put(request.url, cacheable));
const respHeaders = new Headers(cacheableHeaders);
if (allowedOrigin)
respHeaders.set("Access-Control-Allow-Origin", allowedOrigin);
respHeaders.set("Vary", "Origin");
return new Response(body, { headers: respHeaders, status: status });
};
const cacheableHeaders = new Headers();
const source = new R2Source(env, name);
const p = new PMTiles(source, CACHE, nativeDecompress);
try {
const pHeader = await p.getHeader();
if (!tile) {
cacheableHeaders.set("Content-Type", "application/json");
const t = tileJSON(
pHeader,
await p.getMetadata(),
env.PUBLIC_HOSTNAME || url.hostname,
name
);
return cacheableResponse(JSON.stringify(t), cacheableHeaders, 200);
}
if (tile[0] < pHeader.minZoom || tile[0] > pHeader.maxZoom) {
return cacheableResponse(undefined, cacheableHeaders, 404);
}
for (const pair of [
[TileType.Mvt, "mvt"],
[TileType.Png, "png"],
[TileType.Jpeg, "jpg"],
[TileType.Webp, "webp"],
[TileType.Avif, "avif"],
]) {
if (pHeader.tileType === pair[0] && ext !== pair[1]) {
if (pHeader.tileType === TileType.Mvt && ext === "pbf") {
// allow this for now. Eventually we will delete this in favor of .mvt
continue;
}
return cacheableResponse(
`Bad request: requested .${ext} but archive has type .${pair[1]}`,
cacheableHeaders,
400
);
}
}
const tiledata = await p.getZxy(tile[0], tile[1], tile[2]);
switch (pHeader.tileType) {
case TileType.Mvt:
cacheableHeaders.set("Content-Type", "application/x-protobuf");
break;
case TileType.Png:
cacheableHeaders.set("Content-Type", "image/png");
break;
case TileType.Jpeg:
cacheableHeaders.set("Content-Type", "image/jpeg");
break;
case TileType.Webp:
cacheableHeaders.set("Content-Type", "image/webp");
break;
}
if (tiledata) {
return cacheableResponse(tiledata.data, cacheableHeaders, 200);
}
return cacheableResponse(undefined, cacheableHeaders, 204);
} catch (e) {
if (e instanceof KeyNotFoundError) {
return cacheableResponse("Archive not found", cacheableHeaders, 404);
}
throw e;
}
} }
return new Response("Invalid URL", { status: 404 }); const cached = await cache.match(request.url);
if (cached) {
const respHeaders = new Headers(cached.headers);
if (allowedOrigin)
respHeaders.set("Access-Control-Allow-Origin", allowedOrigin);
respHeaders.set("Vary", "Origin");
return new Response(cached.body, {
headers: respHeaders,
status: cached.status,
});
}
const cacheableResponse = (
body: ArrayBuffer | string | undefined,
cacheableHeaders: Headers,
status: number
) => {
cacheableHeaders.set(
"Cache-Control",
`max-age=${env.CACHE_MAX_AGE || 86400}`
);
const cacheable = new Response(body, {
headers: cacheableHeaders,
status: status,
});
ctx.waitUntil(cache.put(request.url, cacheable));
const respHeaders = new Headers(cacheableHeaders);
if (allowedOrigin)
respHeaders.set("Access-Control-Allow-Origin", allowedOrigin);
respHeaders.set("Vary", "Origin");
return new Response(body, { headers: respHeaders, status: status });
};
const cacheableHeaders = new Headers();
const source = new R2Source(env, name);
const p = new PMTiles(source, CACHE, nativeDecompress);
try {
const pHeader = await p.getHeader();
if (!tile) {
cacheableHeaders.set("Content-Type", "application/json");
const t = tileJSON(
pHeader,
await p.getMetadata(),
env.PUBLIC_HOSTNAME || url.hostname,
name
);
return cacheableResponse(JSON.stringify(t), cacheableHeaders, 200);
}
if (tile[0] < pHeader.minZoom || tile[0] > pHeader.maxZoom) {
return cacheableResponse(undefined, cacheableHeaders, 404);
}
for (const pair of [
[TileType.Mvt, "mvt"],
[TileType.Png, "png"],
[TileType.Jpeg, "jpg"],
[TileType.Webp, "webp"],
[TileType.Avif, "avif"],
]) {
if (pHeader.tileType === pair[0] && ext !== pair[1]) {
if (pHeader.tileType === TileType.Mvt && ext === "pbf") {
// allow this for now. Eventually we will delete this in favor of .mvt
continue;
}
return cacheableResponse(
`Bad request: requested .${ext} but archive has type .${pair[1]}`,
cacheableHeaders,
400
);
}
}
const tiledata = await p.getZxy(tile[0], tile[1], tile[2]);
switch (pHeader.tileType) {
case TileType.Mvt:
cacheableHeaders.set("Content-Type", "application/x-protobuf");
break;
case TileType.Png:
cacheableHeaders.set("Content-Type", "image/png");
break;
case TileType.Jpeg:
cacheableHeaders.set("Content-Type", "image/jpeg");
break;
case TileType.Webp:
cacheableHeaders.set("Content-Type", "image/webp");
break;
}
if (tiledata) {
return cacheableResponse(tiledata.data, cacheableHeaders, 200);
}
return cacheableResponse(undefined, cacheableHeaders, 204);
} catch (e) {
if (e instanceof KeyNotFoundError) {
return cacheableResponse("Archive not found", cacheableHeaders, 404);
}
throw e;
}
}, },
}; };