diff --git a/app.js b/app.js index 996eb5d..2b6c17e 100644 --- a/app.js +++ b/app.js @@ -26,19 +26,31 @@ function createApp() { const numero = rawNumero ? String(rawNumero).trim() : ""; try { - const viaCepUrl = `https://viacep.com.br/ws/${cep}/json/`; - let viaCepData = await fetchJson(viaCepUrl); + const viaCepUrl = 'https://api.cep.rest/'; + let cepRestData = await fetch(viaCepUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ cep }) }) + .then(response => response.json()); // ViaCEP com retry e backoff (corrige shadowing e trata exceções) const maxAttempts = 5; let attempt = 0; let retryDelayMs = 1000; // delay inicial - if (!viaCepData || viaCepData.erro) { + if (!cepRestData || cepRestData.erro) { while (attempt < maxAttempts) { try { - viaCepData = await fetchJson(viaCepUrl); - if (viaCepData && !viaCepData.erro) break; + cepRestData = await fetch(viaCepUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ cep }) + }).then(response => response.json()); + if (cepRestData && !cepRestData.erro) break; console.info(`[INFO] ViaCEP retornou erro ou vazio na tentativa ${attempt + 1} para CEP ${cep}`); } catch (e) { console.warn(`[WARN] Erro na chamada ViaCEP (tentativa ${attempt + 1}) para ${cep}: ${e && e.message ? e.message : e}`); @@ -50,15 +62,15 @@ function createApp() { } } - if (!viaCepData || viaCepData.erro) { + if (!cepRestData || cepRestData.erro) { console.error(`[ERROR] ViaCEP falhou após ${maxAttempts} tentativas para CEP ${cep}`); return res.status(404).json({ error: "CEP não encontrado" }); } - const logradouro = viaCepData.logradouro || ""; - const bairro = viaCepData.bairro || ""; - const cidade = viaCepData.localidade || ""; - const uf = viaCepData.uf || ""; + const logradouro = cepRestData.data.logradouro || ""; + const bairro = cepRestData.data.bairro || ""; + const cidade = cepRestData.data.localidade || ""; + const uf = cepRestData.data.uf || ""; const endereco = `${logradouro}, ${numero}, ${bairro}, ${cidade} - ${uf}` .replace(/, ,/g, ",") .replace(/^,\s*/, "");