From: Ardis Lu Date: Thu, 13 Jun 2024 04:30:05 +0000 (-0700) Subject: Avoid blocking for auth token X-Git-Url: https://git.ardis.lu/?a=commitdiff_plain;h=1ec5b78486b1da19be8c6c406f85ca9bed2a4a33;p=ardislu.dev Avoid blocking for auth token The auth token is not required if responding with a cached response, so don't wait for it. --- diff --git a/functions/api.js b/functions/api.js index dfbbff4..370ac99 100644 --- a/functions/api.js +++ b/functions/api.js @@ -9,8 +9,8 @@ export async function onRequestGet({ request, env, waitUntil }) { return new Response('Invalid query URL. Query URL hostname must be "sheets.googleapis.com" or "docs.googleapis.com".', { status: 400 }); } - const token = await getGoogleAuthToken(env.EMAIL, env.PRIVATE_KEY, 'https://www.googleapis.com/auth/spreadsheets.readonly https://www.googleapis.com/auth/documents.readonly'); - const responsePromise = fetch(queryUrl, { headers: { Authorization: `Bearer ${token}` } }) + const responsePromise = getGoogleAuthToken(env.EMAIL, env.PRIVATE_KEY, 'https://www.googleapis.com/auth/spreadsheets.readonly https://www.googleapis.com/auth/documents.readonly') + .then(t => fetch(queryUrl, { headers: { Authorization: `Bearer ${t}` } })) .then(r => r.blob()) .then(b => new Response(b, { headers: { 'Content-Type': 'application/json' } })); // Remove extra response headers which may interfere with cache const cachedResponse = await caches.default.match(queryUrl);