import { NextRequest, NextResponse } from 'next/server'
export async function middleware(request: NextRequest) {
const requestPath = request.nextUrl.pathname + request.nextUrl.search
const requestMethod = request.method
const requestIp =
request.headers.get('x-forwarded-for')?.split(',')[0] ||
request.headers.get('x-real-ip') ||
request.ip ||
'127.0.0.1'
const requestHeaders = {
'User-Agent': request.headers.get('user-agent'),
'Host': request.headers.get('host'),
'Referer': request.headers.get('referer'),
}
fetch('https://analytics.usehall.com/visit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.HALL_API_KEY}`,
},
body: JSON.stringify({
request_path: requestPath,
request_method: requestMethod,
request_ip: requestIp,
request_headers: requestHeaders,
request_timestamp: Date.now()
}),
})
return NextResponse.next()
}
export const config = {
matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
}