- Agora a API do Geogrid faz a viabilidade apenas por caixas. - Retirado rotas iniciais de testes, mantive apenas a /viabilidade.
50 lines
1.7 KiB
JavaScript
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 };
|