Files
kycnotme/web/src/pages/ogimage.png.ts

25 lines
845 B
TypeScript
Raw Normal View History

2025-05-19 10:23:36 +00:00
import { ogImageTemplates } from '../components/OgImage'
import { urlParamsToObject } from '../lib/urls'
import type { APIRoute } from 'astro'
2025-05-19 22:13:13 +00:00
export const GET: APIRoute = (context) => {
const { template, ...props } = urlParamsToObject(context.url.searchParams)
2025-05-19 10:23:36 +00:00
2025-05-19 22:13:13 +00:00
if (!template) return ogImageTemplates.default({}, context)
2025-05-19 10:23:36 +00:00
if (!(template in ogImageTemplates)) {
console.error(`Invalid template: "${template}"`)
2025-05-19 22:13:13 +00:00
return ogImageTemplates.default({}, context)
2025-05-19 10:23:36 +00:00
}
2025-05-19 22:13:13 +00:00
const response = ogImageTemplates[template as keyof typeof ogImageTemplates](props, context)
2025-05-19 10:23:36 +00:00
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!response) {
console.error(`Cannot generate image for template: ${template} and props: ${JSON.stringify(props)}`)
2025-05-19 22:13:13 +00:00
return ogImageTemplates.default({}, context)
2025-05-19 10:23:36 +00:00
}
return response
}