genieacs: implantação (TESTING)
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
3726e4d449
commit
6e2473719d
8 files changed
+439
-1
No files matched your search
@@ -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;
|
||||
Reference in new issue
Block a user