From 5059cffa156621d654f88a7b622ad2a017ab2ad7 Mon Sep 17 00:00:00 2001 From: johnd0e <1838643+johnd0e@users.noreply.github.com> Date: Sun, 3 Mar 2024 01:41:44 +0100 Subject: [PATCH] Cache github token --- src/worker.mjs | 24 +++++++++++++++++++++--- wrangler.toml | 8 +++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/worker.mjs b/src/worker.mjs index c9fbd38..c1418a0 100644 --- a/src/worker.mjs +++ b/src/worker.mjs @@ -1,5 +1,5 @@ export default { - async fetch (request) { + async fetch (request, env) { if (request.method === "OPTIONS") { return handleOPTIONS(request); } @@ -14,8 +14,26 @@ export default { status: 401 }); } - const { token, errResponse } = await getToken(authKey); - if (errResponse) { return errResponse; } + const tokenCache = env.KV; + let token; + try { + token = await tokenCache.get(authKey); + } catch (e) { + console.error(e); + } + if (!token) { + let errResponse; + ({ token, errResponse } = await getToken(authKey)); + if (errResponse) { return errResponse; } + const expiration = token.match(/;exp=(\d+);/)?.[1]; + if (expiration) { + try { + await tokenCache.put(authKey, token, { expiration }); + } catch (e) { + console.error(e); + } + } + } return makeRequest(request, url.pathname, await makeHeaders(token)); } }; diff --git a/wrangler.toml b/wrangler.toml index 1ddf89b..960a85f 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -3,8 +3,6 @@ main = "src/worker.mjs" compatibility_date = "2024-01-17" no_bundle = true -# Bind a KV Namespace. Use KV as persistent storage for small key-value pairs. -# Docs: https://developers.cloudflare.com/workers/runtime-apis/kv -# [[kv_namespaces]] -# binding = "MY_KV_NAMESPACE" -# id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +[[kv_namespaces]] +binding = "KV" +id = "4e595a4637f048ed8c92bab1821c6e54"