79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
/**
|
||
* Configurações das instâncias GenieACS
|
||
* Suporta múltiplas instâncias para expansão futura.
|
||
*
|
||
* Variáveis de ambiente esperadas (prefix GENIEACS_<CHAVE>_*):
|
||
* 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;
|