import { IncomingMessage, ServerResponse } from 'http' import { parseRequest } from './_lib/parser' import { getScreenshot } from './_lib/chromium' import { getHtml } from './_lib/template' import { getChallengeHtml } from './_lib/challenge-template' const isDev = !process.env.AWS_REGION const isHtmlDebug = process.env.OG_HTML_DEBUG === '1' export default async function handler( req: IncomingMessage, res: ServerResponse ) { try { const parsedReq = parseRequest(req) let html = getHtml(parsedReq) if (parsedReq.challengerOutcome) html = getChallengeHtml(parsedReq) if (isHtmlDebug) { res.setHeader('Content-Type', 'text/html') res.end(html) return } const { fileType } = parsedReq const file = await getScreenshot(html, fileType, isDev) res.statusCode = 200 res.setHeader('Content-Type', `image/${fileType}`) res.setHeader( 'Cache-Control', `public, immutable, no-transform, s-maxage=31536000, max-age=31536000` ) res.end(file) } catch (e) { res.statusCode = 500 res.setHeader('Content-Type', 'text/html') res.end('
Sorry, there was a problem
') console.error(e) } }