Refactor (minor)

This commit is contained in:
johnd0e
2025-07-12 22:55:52 +02:00
parent c7cc3f781c
commit c0a837adb6

View File

@@ -32,19 +32,18 @@ export default {
console.error(e); console.error(e);
} }
if (!token) { if (!token) {
let errResponse; let expires_at, errResponse;
({ token, errResponse } = await getToken(authKey)); ({ token, expires_at, errResponse } = await getToken(authKey));
if (errResponse) { return errResponse; } if (errResponse) { return errResponse; }
const expiration = token.match(/;exp=(\d+);/)?.[1]; if (expires_at) {
if (expiration) {
try { try {
await tokenCache.put(authKey, token, { expiration }); await tokenCache.put(authKey, token, { expiration: expires_at });
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
} }
} }
return makeRequest(request, url.pathname, await makeHeaders(token)); return makeRequest(request, url.pathname, token);
} }
}; };
@@ -86,18 +85,18 @@ const getToken = async (authKey) => {
return { errResponse: response }; return { errResponse: response };
} }
const text = await response.text(); const text = await response.text();
let token; let data;
try { try {
token = JSON.parse(text)["token"]; data = JSON.parse(text);
} catch (e) { } catch (e) {
console.error(e.message,"\n",text); console.error(e.message,"\n",text);
return { errResponse: new Response(e.message + "\n" + text, { status: 400 }) }; return { errResponse: new Response(e.message + "\n" + text, { status: 400 }) };
} }
if (!token) { if (!data.token) {
console.error("token not found:\n", text); console.error("token not found:\n", data);
return { errResponse: new Response("token not found:\n" + text, { status: 400 }) }; return { errResponse: new Response("token not found:\n" + text, { status: 400 }) };
} }
return { token }; return data;
}; };
const makeHeaders = async (token) => { const makeHeaders = async (token) => {
@@ -126,16 +125,16 @@ const makeHeaders = async (token) => {
}; };
}; };
const makeRequest = async (request, path, headers) => { const makeRequest = async (request, path, token) => {
if (path.startsWith("/v1/")) { if (path.startsWith("/v1/")) {
path = path.substring(3); path = path.substring(3);
} }
const response = await fetch(`https://api.githubcopilot.com${path}`, { const response = await fetch(`https://api.githubcopilot.com${path}`, {
method: request.method, method: request.method,
headers, headers: await makeHeaders(token),
body: request.body, body: request.body,
}); });
headers = new Headers(response.headers); const headers = new Headers(response.headers);
headers.set("Access-Control-Allow-Origin", "*"); headers.set("Access-Control-Allow-Origin", "*");
let body; let body;
if (response.ok && path === "/chat/completions" && request.method === "POST") { if (response.ok && path === "/chat/completions" && request.method === "POST") {