genieacs: implantação (TESTING)

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-04-01 08:40:57 -03:00
1 parent 3726e4d449
commit 6e2473719d
8 files changed
+439 -1

No files matched your search

+62
View File
@@ -0,0 +1,62 @@
const GenieACSApi = require('./api');
const GenieACSConfig = require('./config');
const logger = require('../utils/logger');
class GenieACSManager {
constructor() {
this.api = new GenieACSApi();
this.config = new GenieACSConfig();
logger.info('GenieACSManager inicializado');
console.log('📡 GenieACSManager inicializado');
}
/**
* Verifica se ao menos uma instância está configurada.
*/
isReady() {
return this.config.isReady();
}
/**
* Busca informações de um roteador/CPE pelo serial number ou pela TAG (username TopSapp).
* Tenta por serial primeiro; se não encontrar, tenta por TAG.
*
* @param {string} termo - Serial ou TAG do dispositivo
* @param {string} location - Texto de localização (opcional)
* @returns {Promise<Object>} - { success, device, instance, searchedBy, error }
*/
async buscarRoteador(termo, location = '') {
if (!this.isReady()) {
return {
success: false,
error: 'GenieACS não está configurado. Verifique as variáveis GENIEACS_* no arquivo .env'
};
}
const instance = this.config.getInstanceByLocation(location);
const termoLimpo = termo.trim();
// 1ª tentativa: busca por serial
logger.info(`[GenieACS] Tentando como serial: "${termoLimpo}"`);
const porSerial = await this.api.buscarDispositivo(termoLimpo, instance);
if (porSerial.success) {
return { ...porSerial, instance: instance.name };
}
// 2ª tentativa: busca por TAG (usuario/login TopSapp)
logger.info(`[GenieACS] Não encontrado como serial. Tentando como TAG: "${termoLimpo}"`);
const porTag = await this.api.buscarPorTag(termoLimpo, instance);
if (porTag.success) {
return { ...porTag, instance: instance.name };
}
// Nenhum resultado
const errConexao = porSerial.error || porTag.error;
return {
success: false,
error: errConexao || `Nenhum dispositivo encontrado com serial ou TAG "${termoLimpo}"`
};
}
}
module.exports = GenieACSManager;