const axios = require('axios'); const fs = require('fs'); const readline = require('readline'); const { apiConfig, apiViabilidadeUrl, apiUrlBase } = require('../config/apiConfig'); async function consultarViabilidade(data) { try { const dataType = await discoverDataType(data); let endpoint = apiUrlBase; if (dataType === 'geolocalizacao') { endpoint += 'viabilidade/lat-long'; } else { endpoint += 'viabilidade'; } const response = await axios.post(endpoint, data, { timeout: 10000, headers: { 'Content-Type': 'application/json' } }); console.log('Resposta da API de viabilidade:', response.data); return (response.data); } catch (error) { throw error; } } // Preciso de uma função para verificar se os dados vindos são de CEP ou de geolocalização async function discoverDataType(input) { if (typeof input === 'string') { // Trata como filePath const instream = fs.createReadStream(input, { encoding: 'utf8' }); const rl = readline.createInterface({ input: instream, crlfDelay: Infinity }); let headers = []; for await (const rawLine of rl) { const line = rawLine.replace(/\r$/, ''); if (!line.trim()) continue; headers = line.split(';').map(h => h.trim().toLowerCase()); break; } rl.close(); if (headers.includes('cep') && headers.includes('numero')) { return 'cep'; } else if (headers.includes('latitude') && headers.includes('longitude')) { return 'geolocalizacao'; } else { return 'unknown'; } } else if (typeof input === 'object') { // Trata como objeto de dados if (input.cep && input.numero) { return 'cep'; } else if (input.latitude && input.longitude) { return 'geolocalizacao'; } else { return 'unknown'; } } else { return 'unknown'; } } module.exports = { consultarViabilidade, discoverDataType };