diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e9ab999 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +FORGEJO_BASE_URL=https://git.gay diff --git a/.gitignore b/.gitignore index 554d9dc..56cda82 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ node_modules/ +.env +.env.* +!.env.example + # we're a pnpm household now package-lock.json \ No newline at end of file diff --git a/package.json b/package.json index 7c3cc4c..cf3c493 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "license": "ISC", "dependencies": { "@besties/html2png": "^0.1.8", + "dotenv": "^16.3.1", "eta": "^3.1.0", "express": "^4.18.2", "node-fetch": "^3.3.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e07fdc2..aa6e66c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@besties/html2png': specifier: ^0.1.8 version: 0.1.8 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 eta: specifier: ^3.1.0 version: 3.1.0 @@ -503,6 +506,11 @@ packages: domhandler: 5.0.3 dev: false + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + dev: false + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false diff --git a/server.js b/server.js index aeab6fe..a7ed982 100644 --- a/server.js +++ b/server.js @@ -1,3 +1,4 @@ +import 'dotenv/config' import express from 'express' import { Eta } from 'eta' import render, { renderHtml } from './lib/render.js' @@ -6,6 +7,9 @@ import fetch from 'node-fetch' // satori is using the native fetch api, causing a warning, so make node-fetch the default globalThis.fetch = fetch +const forgejoBaseUrl = process.env.FORGEJO_BASE_URL +if (!forgejoBaseUrl) throw new Error('FORGEJO_BASE_URL unspecified') + const debug = process.env.DEBUG ? true : false const eta = new Eta({ @@ -34,7 +38,7 @@ function getLanguagePercentages(languages) { app.get('/:owner/:repo', async function (req, res) { const repoResp = await fetch( - `https://git.gay/api/v1/repos/${encodeURIComponent( + `${forgejoBaseUrl}/api/v1/repos/${encodeURIComponent( req.params.owner )}/${encodeURIComponent(req.params.repo)}` ) @@ -47,7 +51,7 @@ app.get('/:owner/:repo', async function (req, res) { let languages = {} if (!repo.empty && repo.languages_url) { const languagesResp = await fetch( - `https://git.gay/api/v1/repos/${encodeURIComponent( + `${forgejoBaseUrl}/api/v1/repos/${encodeURIComponent( req.params.owner )}/${encodeURIComponent(req.params.repo)}/languages` ) @@ -72,7 +76,7 @@ app.get('/:owner/:repo', async function (req, res) { app.get('/:owner/:repo/issue/:num', async function (req, res) { const issueResp = await fetch( - `https://git.gay/api/v1/repos/${encodeURIComponent( + `${forgejoBaseUrl}/api/v1/repos/${encodeURIComponent( req.params.owner )}/${encodeURIComponent(req.params.repo)}/issues/${encodeURIComponent( req.params.num @@ -86,7 +90,7 @@ app.get('/:owner/:repo/issue/:num', async function (req, res) { const issue = await issueResp.json() let languages = {} const languagesResp = await fetch( - `https://git.gay/api/v1/repos/${encodeURIComponent( + `${forgejoBaseUrl}/api/v1/repos/${encodeURIComponent( req.params.owner )}/${encodeURIComponent(req.params.repo)}/languages` )