Deploy
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
import { NextRequest, NextResponse } from 'next/server'
|
||||||
|
|
||||||
|
const EMDASH_URL = process.env.EMDASH_URL || 'http://localhost:4321'
|
||||||
|
const EMDASH_TOKEN = process.env.EMDASH_API_TOKEN || ''
|
||||||
|
|
||||||
|
export async function GET(
|
||||||
|
request: NextRequest,
|
||||||
|
{ params }: { params: Promise<{ collection: string }> }
|
||||||
|
) {
|
||||||
|
const { collection } = await params
|
||||||
|
if (!EMDASH_TOKEN) return NextResponse.json({ items: [] })
|
||||||
|
try {
|
||||||
|
const url = new URL(`/_emdash/api/content/${collection}`, EMDASH_URL)
|
||||||
|
const { searchParams } = request.nextUrl
|
||||||
|
url.searchParams.set('status', searchParams.get('status') || 'published')
|
||||||
|
url.searchParams.set('limit', searchParams.get('limit') || '20')
|
||||||
|
const res = await fetch(url.toString(), {
|
||||||
|
headers: { Authorization: `Bearer ${EMDASH_TOKEN}` },
|
||||||
|
next: { revalidate: 60 },
|
||||||
|
})
|
||||||
|
if (!res.ok) return NextResponse.json({ items: [] })
|
||||||
|
const json = await res.json() as { data?: { items?: unknown[] }; items?: unknown[] }
|
||||||
|
const raw = json.data?.items ?? json.items ?? []
|
||||||
|
// emDash stores image fields as { provider, id, src } — flatten to plain URL strings.
|
||||||
|
const items = raw.map((item: unknown) => {
|
||||||
|
if (!item || typeof item !== 'object') return item
|
||||||
|
const r = item as Record<string, unknown>
|
||||||
|
const data = r.data as Record<string, unknown> | undefined
|
||||||
|
if (!data) return item
|
||||||
|
const normalized: Record<string, unknown> = {}
|
||||||
|
for (const [k, v] of Object.entries(data)) {
|
||||||
|
normalized[k] = v && typeof v === 'object' && 'src' in v ? (v as { src: unknown }).src ?? v : v
|
||||||
|
}
|
||||||
|
return { ...r, data: normalized }
|
||||||
|
})
|
||||||
|
return NextResponse.json({ items })
|
||||||
|
} catch {
|
||||||
|
return NextResponse.json({ items: [] })
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user