import { origemDoPedido, origemPublicaDoAdmin } from "@/lib/origem-publica";

import { montarEnderecos, type Enderecos } from "./metadados";

/**
 * Os endereços públicos do login por botão, a partir do pedido que chegou.
 *
 * Em produção são dois domínios no mesmo servidor: o do conector
 * (mcp.ktalogu.com.br), que é o que a pessoa cola no assistente e onde o
 * programa se registra e troca o código, e o do painel (admin.), onde a pessoa
 * está logada e onde fica a tela de permitir. Na máquina de quem desenvolve é
 * tudo um endereço só.
 *
 * A variável `MCP_BASE_URL` manda quando existe. Sem ela, o endereço sai do
 * pedido, e do `X-Forwarded-Host` só vale o último item: é o que o Apache
 * escreve; o que vem antes foi mandado por quem chama.
 */
export function enderecosDoConector(pedido: { url: string; headers: Headers }): Enderecos {
  const cabecalhos = new Headers(pedido.headers);
  const encaminhados = (cabecalhos.get("x-forwarded-host") || "")
    .split(",")
    .map((host) => host.trim())
    .filter(Boolean);
  if (encaminhados.length > 1) cabecalhos.set("x-forwarded-host", encaminhados[encaminhados.length - 1]);
  const limpo = new Request(pedido.url, { headers: cabecalhos });

  return montarEnderecos({
    /* Por onde este pedido chegou (painel ou conector). */
    pedida: origemDoPedido(limpo),
    painel: origemPublicaDoAdmin(limpo),
    doAmbiente: process.env.MCP_BASE_URL,
  });
}
