sothis-contratacao-api/src/services/geogridService.js
gabriel.amancio e2f6915a50 REFACTOR: handleViabilidade refatorado.
- Agora a API do Geogrid faz a viabilidade apenas por caixas.

- Retirado rotas iniciais de testes, mantive apenas a /viabilidade.
2025-11-18 08:26:50 -03:00

50 lines
1.7 KiB
JavaScript

const apiConfig = require("../config/apiConfig.js")
const axios = require("axios");
const qs = require("qs");
const consultaViabilidade = async (lat, lon) => {
const url = apiConfig.geogridApiUrl;
const apiKey = apiConfig.geogridApiKey;
const apiCookie = apiConfig.geogridApiCookie;
try {
// Parâmetros da consulta
const params = {
raio: 5000,
latitude: lat,
longitude: lon,
"itens[]": "caixa",
ordenarCampos: ["distancia"],
ordenarPor: ["asc"],
consultarIndividual: "S"
};
// Console log com curl equivalente para depuração
const curlParams = qs.stringify(params, { arrayFormat: 'brackets' });
console.log(`CURL equivalente: curl -X GET "${url}?${curlParams}" -H "api-key: ${apiKey}" -H "Cookie: ${apiCookie}"`);
const response = await axios.get(url, {
params,
// força a serialização do tipo `itens[]=caixa`
paramsSerializer: p => qs.stringify(p, { arrayFormat: 'brackets' }),
headers: {
'api-key': apiKey,
Cookie: apiCookie
}
});
const registros = response.data && response.data.registros;
const primeiro = Array.isArray(registros) && registros.length ? registros[0] : null;
// Retorna no formato esperado pelo controller (viabilidade.data.distancia)
return { data: primeiro };
} catch (error) {
console.error("Erro ao consultar viabilidade:", error && error.message ? error.message : error);
throw new Error("Erro ao consultar viabilidade");
}
};
module.exports = { consultaViabilidade };