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).*)'],
}