const fs = require("fs"); const resvg = require("@resvg/resvg-js").Resvg; const moment = require("moment-timezone"); const tests = require("../controller/speedtests"); const axios = require("axios"); async function generateOpenGraphImage(req) { const test = await tests.listStatistics(1); if (!test.download.avg || !test.upload.avg || !test.ping.avg) { throw new Error("Error fetching OpenGraph data"); } const fontPath = "/assets/fonts/inter-v12-latin-regular.ttf"; const font = process.env.NODE_ENV === "production" ? (await axios.get(`${req.protocol}://${req.hostname}${fontPath}`)).data : await fs.promises.readFile(`client/public${fontPath}`); const html = (await import("satori-html")).html; const satori = (await import("satori")).default; const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; const date = moment().tz(timeZone).format("MM/DD/YYYY"); const time = moment().tz(timeZone).format("h:mm A z"); const markup = html`
MySpeed
${date}
${time}
DOWNLOAD
Mbps
${String(test.download.avg)}
UPLOAD
Mbps
${String(test.upload.avg)}
Ping
ms
${String(test.ping.avg)}