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
|
|
|
|
|
}
|