diff options
| author | Jan Tuomi <jan.tuomi@valuemotive.com> | 2021-11-04 13:34:02 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@valuemotive.com> | 2021-11-04 13:34:02 +0200 |
| commit | 462b2fe10cf45da3dbcb5ee20ca6dfb79f46e6b6 (patch) | |
| tree | 2862938769f5c3e0efd57f5256dbdbb5452cdb4e /server | |
Initial commit
Diffstat (limited to 'server')
| -rw-r--r-- | server/google.ts | 24 | ||||
| -rw-r--r-- | server/server.ts | 19 |
2 files changed, 43 insertions, 0 deletions
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<string> { + 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}`); + }); +}); |
