From 462b2fe10cf45da3dbcb5ee20ca6dfb79f46e6b6 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 4 Nov 2021 13:34:02 +0200 Subject: Initial commit --- server/google.ts | 24 ++++++++++++++++++++++++ server/server.ts | 19 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 server/google.ts create mode 100644 server/server.ts (limited to 'server') diff --git a/server/google.ts b/server/google.ts new file mode 100644 index 0000000..3fe6362 --- /dev/null +++ b/server/google.ts @@ -0,0 +1,24 @@ +import got from "got/dist/source"; + +export const fetchIdToken = async function (aud: string): Promise { + const metadataServerTokenURL = `http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=${aud}`; + + let resp; + try { + resp = await got(metadataServerTokenURL, { + headers: { + "Metadata-Flavor": "Google" + } + }); + } catch (err) { + console.error(err); + throw new Error("Failed to fetch ID token from Google metadata endpoint"); + } + + const token = resp.body; + if (!token) { + throw new Error("ID token from Google metadata endpoint is empty"); + } + + return token; +}; diff --git a/server/server.ts b/server/server.ts new file mode 100644 index 0000000..462678c --- /dev/null +++ b/server/server.ts @@ -0,0 +1,19 @@ +import express from "express"; +import next from "next"; + +const port = parseInt(process.env.PORT || "", 10) || 3000; +const dev = process.env.NODE_ENV !== "production"; +const app = next({ dev }); +const handle = app.getRequestHandler(); + +app.prepare().then(async () => { + const server = express(); + + server.get("*", (req, res) => { + return handle(req, res); + }); + + server.listen(port, () => { + console.log(`> Ready on http://localhost:${port}`); + }); +}); -- cgit v1.3