/** * Configurações das instâncias GenieACS * Suporta múltiplas instâncias para expansão futura. * * Variáveis de ambiente esperadas (prefix GENIEACS__*): * GENIEACS_GUARAI_URL, GENIEACS_GUARAI_NBI_PORT, * GENIEACS_GUARAI_USER, GENIEACS_GUARAI_PASS */ class GenieACSConfig { constructor() { // Instâncias conhecidas – novas podem ser adicionadas aqui // ou via variáveis de ambiente com o mesmo padrão de chave. this.instances = { guarai: { name: 'Guarai - Clicknet', baseURL: process.env.GENIEACS_GUARAI_URL || 'http://g.clicknetto.com.br', nbiPort: parseInt(process.env.GENIEACS_GUARAI_NBI_PORT, 10) || 7557, user: process.env.GENIEACS_GUARAI_USER || '', password: process.env.GENIEACS_GUARAI_PASS || '' } /* * Exemplo de nova instância futura: * pedro_afonso: { * name: 'Pedro Afonso - Clicknet', * baseURL: process.env.GENIEACS_PEDRO_AFONSO_URL || '', * nbiPort: parseInt(process.env.GENIEACS_PEDRO_AFONSO_NBI_PORT, 10) || 7557, * user: process.env.GENIEACS_PEDRO_AFONSO_USER || '', * password: process.env.GENIEACS_PEDRO_AFONSO_PASS || '' * } */ }; } /** * Retorna a instância padrão (guarai). */ getDefaultInstance() { return this.instances.guarai; } /** * Retorna uma instância pelo nome da chave. * Se a chave não existir, retorna a instância padrão. */ getInstanceByKey(key) { return this.instances[key] || this.getDefaultInstance(); } /** * Seleciona a instância correta com base em um texto de localização livre. * Útil quando o bot suportar múltiplas instâncias. */ getInstanceByLocation(location = '') { const loc = location.toLowerCase(); if (loc.includes('pedro') || loc.includes('afonso')) { return this.instances.pedro_afonso || this.getDefaultInstance(); } return this.getDefaultInstance(); } /** * Verifica se ao menos uma instância está configurada (user + password). */ isReady() { return Object.values(this.instances).some( (inst) => inst.user && inst.password ); } /** * Retorna a URL NBI completa de uma instância. */ getNBIUrl(instance) { return `${instance.baseURL}:${instance.nbiPort}`; } } module.exports = GenieACSConfig;