import { is } from 'date-fns/locale' import { defineEventHandler, getCookie, getRequestHeaders, getRequestURL, readBody } from 'h3' export default defineEventHandler(async (event) => { const { method } = event.node.req const headers = getRequestHeaders(event) const url = getRequestURL(event) const config = useRuntimeConfig() const apiOrigin = config.public.API_ORIGIN const apiVclaim = config.public.VCLAIM const pathname = url.pathname.replace(/^\/api/, '') const isVclaim = pathname.includes('/vclaim') let targetUrl = apiOrigin + pathname + (url.search || '') if (pathname.includes('/vclaim')) { targetUrl = apiVclaim + pathname.replace('/vclaim', '') + (url.search || '') } const verificationId = headers['verification-id'] as string | undefined let bearer = '' if (verificationId) { bearer = getCookie(event, `Verification-${verificationId}`) || '' if (!bearer) bearer = getCookie(event, 'authentication') || '' } else { bearer = getCookie(event, 'authentication') || '' } const forwardHeaders = new Headers() if (headers['content-type']) forwardHeaders.set('Content-Type', headers['content-type']) if (!isVclaim) forwardHeaders.set('Authorization', `Bearer ${bearer}`) let body: any if (['POST', 'PATCH'].includes(method!)) { if (headers['content-type']?.includes('multipart/form-data')) { body = await readBody(event) } else { body = await readBody(event) forwardHeaders.set('Content-Type', 'application/json') body = JSON.stringify(body) } } const res = await fetch(targetUrl, { method, headers: forwardHeaders, body, }) if (isVclaim) { console.log('res:', res) } return res })