sothis-contratacao-api/src/services/geogridService.js

45 lines
1.4 KiB
JavaScript
Raw Normal View History

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 {
// Monta os parâmetros como arrays para garantir serialização correta
const params = {
raio: 5000,
latitude: lat,
longitude: lon,
itens: ["caixa"],
ordenarCampos: ["distancia"],
ordenarPor: ["asc"]
};
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 };