import type { WebhookHandler } from 'pagamentos'
import type { Request, Response } from 'express'
export function toExpress(handler: WebhookHandler) {
return async (req: Request, res: Response) => {
// Constrói um Request padrão a partir do req do Express
const request = new Request(
`${req.protocol}://${req.get('host')}${req.originalUrl}`,
{
method: req.method,
headers: Object.entries(req.headers).reduce(
(acc, [key, value]) => {
if (value) acc[key] = Array.isArray(value) ? value.join(', ') : value
return acc
},
{} as Record<string, string>
),
body: req.method !== 'GET' ? JSON.stringify(req.body) : undefined
}
)
const response = await handler(request)
// Traduz a Response de volta para o formato do Express
res.status(response.status)
response.headers.forEach((value, key) => res.setHeader(key, value))
const text = await response.text()
res.send(text)
}
}