SFS/app/api/whysfs/route.ts
2025-12-16 10:03:26 +05:30

51 lines
2.2 KiB
TypeScript

import { NextResponse } from 'next/server'
export async function GET() {
try {
const strapiBaseUrl = process.env.NEXT_PUBLIC_STRAPI_BASE_URL || process.env.NEW_STRAPI_URL
// Fetch heading/description from whyschoolforschool and cards (with SVG) from fixed-cards
const [whyRes, cardsRes] = await Promise.all([
fetch(`${strapiBaseUrl}/api/whyschoolforschools?pagination[pageSize]=1`, {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept': 'application/json'
},
next: { revalidate: 60 }
}),
fetch(`${strapiBaseUrl}/api/fixed-cards?populate=*`, {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept': 'application/json'
},
next: { revalidate: 60 }
})
])
if (!whyRes.ok) throw new Error(`Why response ${whyRes.status}`)
if (!cardsRes.ok) throw new Error(`Cards response ${cardsRes.status}`)
const whyJson = await whyRes.json()
const cardsJson = await cardsRes.json()
// Normalize whyschoolforschool (supports v4 attributes or direct data)
const firstWhy = Array.isArray(whyJson?.data)
? (whyJson.data[0]?.attributes ?? whyJson.data[0])
: (whyJson?.data?.attributes ?? whyJson?.data)
const heading = firstWhy?.heading ?? 'Why SFS'
const description =
firstWhy?.description ??
'We combine expertise in education with cutting-edge technology to deliver solutions that truly make a difference.'
// Normalize cards array
const cards = Array.isArray(cardsJson?.data)
? cardsJson.data.map((item: any) => item?.attributes ?? item ?? {})
: []
return NextResponse.json({ heading, description, cards })
} catch (error) {
console.error('Error fetching WhySFS data:', error)
return NextResponse.json({ error: 'Failed to fetch data' }, { status: 500 })
}
}