From 0ccd7f4f1cb5ce9a5ef75d09fbffbfbadd80c450 Mon Sep 17 00:00:00 2001 From: xynydev <60004820+xynydev@users.noreply.github.com> Date: Sat, 20 Apr 2024 13:18:23 +0300 Subject: [PATCH] fix: give gh api reqs user agent, use gh api helper in auth hook --- src/hooks.server.ts | 11 +++++------ src/lib/ts/github/api.ts | 21 ++++++++++++++++++--- src/routes/+layout.server.ts | 13 ++----------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 24cfd9c..ec19261 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,13 +1,12 @@ +import { ghApiGet } from "$lib/ts/github/api"; import type { Handle } from "@sveltejs/kit"; export const handle: Handle = async ({ event, resolve }) => { const githubToken = event.cookies.get("github_oauth_token") ?? null; - const githubUserResponse = await fetch("https://api.github.com/user", { - headers: { - Authorization: `Bearer ${githubToken}` - } - }); - event.locals.githubUser = githubUserResponse.ok ? await githubUserResponse.json() : null; + if (githubToken !== null) { + const githubUserResponse = await ghApiGet(githubToken, "/user"); + event.locals.githubUser = githubUserResponse.ok ? githubUserResponse.data : null; + } return await resolve(event); }; diff --git a/src/lib/ts/github/api.ts b/src/lib/ts/github/api.ts index 5dfe5ec..30a35a4 100644 --- a/src/lib/ts/github/api.ts +++ b/src/lib/ts/github/api.ts @@ -5,7 +5,12 @@ export async function ghApiPost( ): Promise<{ ok: boolean; data: object }> { const res = await fetch(`https://api.github.com${path}`, { method: "post", - headers: { Authorization: `Bearer ${token}`, "X-GitHub-Api-Version": "2022-11-28" }, + headers: { + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "BlueBuild Workshop", + Accept: "application/vnd.github+json" + }, body: JSON.stringify(data) }); return { data: await res.json(), ok: res.ok }; @@ -18,7 +23,12 @@ export async function ghApiPut( ): Promise<{ ok: boolean; data: object }> { const res = await fetch(`https://api.github.com${path}`, { method: "put", - headers: { Authorization: `Bearer ${token}`, "X-GitHub-Api-Version": "2022-11-28" }, + headers: { + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "BlueBuild Workshop", + Accept: "application/vnd.github+json" + }, body: JSON.stringify(data) }); return { data: await res.json(), ok: res.ok }; @@ -30,7 +40,12 @@ export async function ghApiGet( ): Promise<{ ok: boolean; data: object }> { const res = await fetch(`https://api.github.com${path}`, { method: "get", - headers: { Authorization: `Bearer ${token}`, "X-GitHub-Api-Version": "2022-11-28" } + headers: { + Authorization: `Bearer ${token}`, + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "BlueBuild Workshop", + Accept: "application/vnd.github+json" + } }); return { data: await res.json(), ok: res.ok }; } diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index f4ffa96..8452f02 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,14 +1,5 @@ -export async function load({ locals, cookies }) { - const githubToken = cookies.get("github_oauth_token") ?? null; - const githubUserResponse = await fetch("https://api.github.com/user", { - headers: { - Authorization: `Bearer ${githubToken}`, - "User-Agent": "BlueBuild Workshop" - } - }); - +export async function load({ locals }) { return { - githubUser: githubUserResponse.ok ? await githubUserResponse.json() : null, - status: githubUserResponse.statusText + " " + githubUserResponse.status + githubUser: locals.githubUser }; }