Files
boris/api/article-og-refresh.ts
Gigi 70ac7dce95 fix: add .js extensions to ESM imports for Vercel compatibility
ESM requires explicit file extensions in import paths. Add .js
extensions to all relative imports in API files and services,
even though source files are .ts (they compile to .js).

This fixes ERR_MODULE_NOT_FOUND errors on Vercel.
2025-11-07 19:01:01 +01:00

36 lines
1.2 KiB
TypeScript

import type { VercelRequest, VercelResponse } from '@vercel/node'
import { setArticleMeta } from './services/ogStore.js'
import { fetchArticleMetadataViaRelays } from './services/articleMeta.js'
export default async function handler(req: VercelRequest, res: VercelResponse) {
// Validate refresh secret
const providedSecret = req.headers['x-refresh-key']
const expectedSecret = process.env.OG_REFRESH_SECRET || ''
if (providedSecret !== expectedSecret) {
return res.status(401).json({ error: 'Unauthorized' })
}
const naddr = (req.query.naddr as string | undefined)?.trim()
if (!naddr) {
return res.status(400).json({ error: 'Missing naddr parameter' })
}
try {
// Fetch metadata via relays (WebSockets)
const meta = await fetchArticleMetadataViaRelays(naddr)
if (meta) {
// Store in Redis
await setArticleMeta(naddr, meta)
return res.status(200).json({ ok: true, cached: true })
} else {
return res.status(200).json({ ok: true, cached: false })
}
} catch (err) {
console.error('Error refreshing article metadata:', err)
return res.status(500).json({ error: 'Internal server error' })
}
}