import { NextRequest, NextResponse } from 'next/server';

export const runtime = 'edge';

export async function GET(
  request: NextRequest,
  { params }: { params: Promise<{ cep: string }> }
) {
  try {
    const resolvedParams = await params;
    const { cep } = resolvedParams;

    // Validar CEP (apenas números, 8 dígitos)
    const cleanCep = cep.replace(/\D/g, '');
    if (cleanCep.length !== 8) {
      return NextResponse.json(
        { error: 'CEP deve conter 8 dígitos' },
        { status: 400 }
      );
    }

    const token = process.env.CEP_API_TOKEN;

    // Fazer a requisição para a API AwesomeAPI
    const response = await fetch(
      `https://cep.awesomeapi.com.br/json/${cleanCep}?token=${token}`,
      {
        headers: {
          'Content-Type': 'application/json',
        },
      }
    );

    if (!response.ok) {
      return NextResponse.json(
        { error: 'CEP não encontrado' },
        { status: 404 }
      );
    }

    const data = await response.json();

    // Verificar se o CEP é válido (AwesomeAPI pode retornar erro específico ou status code)
    if (data.code === 'not_found' || data.status === 404) {
      return NextResponse.json(
        { error: 'CEP não encontrado' },
        { status: 404 }
      );
    }

    // Mapear resposta da AwesomeAPI para o formato esperado pelo frontend (compatível com ViaCEP)
    const mappedData = {
      logradouro: data.address,
      bairro: data.district,
      localidade: data.city,
      uf: data.state,
      cep: data.cep,
      ddd: data.ddd,
      lat: data.lat,
      lng: data.lng
    };

    return NextResponse.json(mappedData);
  } catch (error) {
    console.error('Erro ao buscar CEP:', error);
    return NextResponse.json(
      { error: 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}