import { ImageResponse } from 'next/og'; import { getProductBySlug } from '@/lib/mdx'; import { getTranslations } from 'next-intl/server'; import { OGImageTemplate } from '@/components/OGImageTemplate'; import { NextRequest } from 'next/server'; export const runtime = 'nodejs'; export async function GET( request: NextRequest, { params }: { params: { locale: string } } ) { const { searchParams } = new URL(request.url); const slug = searchParams.get('slug'); const locale = params.locale || 'en'; if (!slug) { return new Response('Missing slug', { status: 400 }); } const t = await getTranslations({ locale, namespace: 'Products' }); // Check if it's a category page const categories = ['low-voltage-cables', 'medium-voltage-cables', 'high-voltage-cables', 'solar-cables']; if (categories.includes(slug)) { const categoryKey = slug.replace(/-cables$/, '').replace(/-([a-z])/g, (g) => g[1].toUpperCase()); const categoryTitle = t.has(`categories.${categoryKey}.title`) ? t(`categories.${categoryKey}.title`) : slug; const categoryDesc = t.has(`categories.${categoryKey}.description`) ? t(`categories.${categoryKey}.description`) : ''; return new ImageResponse( ( ), { width: 1200, height: 630, } ); } const product = await getProductBySlug(slug, locale); if (!product) { return new ImageResponse(
); } const { origin } = new URL(request.url); const featuredImage = product.frontmatter.images?.[0] ? (product.frontmatter.images[0].startsWith('http') ? product.frontmatter.images[0] : `${origin}${product.frontmatter.images[0]}`) : undefined; return new ImageResponse( ( ), { width: 1200, height: 630, } ); }