import { ImageResponse } from '@vercel/og' import { NextRequest } from 'next/server' import fetch from 'node-fetch'; export const config = { runtime: 'experimental-edge', } const TITLE = "Measure is unceasing" const getHiTitle = (body, i) => { console.log(`Getting h${i}`) let hi = `h${i}` let regex = new RegExp(hi + "\>(.*)\<\/" + hi) console.log(regex) let his = body.split("\n").filter(line => line.includes(`<${hi}>`)) for (let line of his) { let regexOutput = regex.exec(line) if (regexOutput != null) { let regexMatch = regexOutput[1] if (regexMatch != TITLE && !regexMatch.includes(TITLE)) { return regexMatch } } } return TITLE } const getTitle = body => { let bestH1match = getHiTitle(body, 1) if (bestH1match == TITLE) { let bestH2match = getHiTitle(body, 2) return bestH2match } return bestH1match } const getFirstImgurImage = body => { let lines = body.split("\n").filter(line => line.includes('img src="https://i.imgur.com/')) if (lines.length > 0) { let regex = new RegExp('img src="https://i.imgur.com/(.*?)"') let regexOutput = regex.exec(lines[0]) if (regexOutput != null) { let regexMatch = regexOutput[1] let imgurUrl = `https://i.imgur.com/${regexMatch}` console.log(imgurUrl) return imgurUrl } } } export default async function handler(req: NextRequest) { const { searchParams } = req.nextUrl const endpoint = searchParams.get('endpoint') console.log(searchParams) if (!endpoint) { return new ImageResponse(<>{'Try with "?endpoint=blog/2022/09/02/simple-estimation-examples-in-squiggle/"'}, { width: 1200, height: 630, }) } const response = await fetch(`https://nunosempere.com/${endpoint}`); const body = await response.text(); // Ah fuck it, I'll just use a regex. // let title = getTitle(body) console.log(title) let image = getFirstImgurImage(body) return new ImageResponse( (
{/* eslint-disable-next-line @next/next/no-img-element */} avatar

{title || "Measure is unceasing"}

nunosempere.com/{endpoint}

), { width: 1200, height: 630, } ) }