evolution-bridge
Version:
Biblioteca TypeScript para integração com a API do Evolution
112 lines (111 loc) • 3.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EvolutionBridge = void 0;
const axios_1 = __importDefault(require("axios"));
/**
* EvolutionBridge - Classe principal para interação com a API do Evolution
*
* @example
* ```typescript
* const bridge = new EvolutionBridge({
* url: 'https://api.evolution.com',
* apiKey: 'your-api-key',
* instance: 'your-instance'
* });
*
* // Enviar mensagem de texto
* await bridge.sendText({
* data: {
* number: '5511999999999',
* text: 'Hello World!'
* }
* });
* ```
*/
class EvolutionBridge {
/**
* Cria uma nova instância do EvolutionBridge
*
* @param config - Configuração necessária para inicialização
* @param config.url - URL base da API do Evolution
* @param config.apiKey - Chave de API para autenticação
* @param config.instance - Nome da instância do Evolution
*
* @throws {Error} Se alguma configuração obrigatória estiver faltando
*/
constructor(config) {
const { url, apiKey, instance } = config;
if (!url) {
throw new Error("The 'url' property is required to initialize EvolutionBridge.");
}
if (!apiKey) {
throw new Error("The 'apiKey' property is required to initialize EvolutionBridge.");
}
if (!instance) {
throw new Error("The 'instance' property is required to initialize EvolutionBridge.");
}
this.client = axios_1.default.create({
baseURL: url,
headers: {
'Content-Type': 'application/json',
apikey: apiKey,
},
maxBodyLength: Infinity,
});
this.instance = instance;
}
/**
* Método privado para realizar requisições POST
*
* @param params - Parâmetros da requisição
* @param params.url - Endpoint da API
* @param params.data - Dados a serem enviados
* @param params.config - Configurações adicionais do Axios
*
* @returns Promise com a resposta da API
*
* @private
*/
post({ url, data, config = {} }) {
return this.client.post(url, data, config);
}
/**
* Envia uma mensagem de texto para um número específico
*
* @param params - Parâmetros para envio da mensagem
* @param params.data - Dados da mensagem
* @param params.data.number - Número do destinatário no formato internacional (ex: 5511999999999)
* @param params.data.text - Texto da mensagem
* @param params.data.delay - Delay em milissegundos antes do envio (opcional)
* @param params.data.quoted - Mensagem para citar (opcional)
* @param params.data.linkPreview - Habilitar preview de links (opcional)
* @param params.data.mentionsEveryOne - Mencionar todos no grupo (opcional)
* @param params.data.mentioned - Lista de números para mencionar (opcional)
* @param params.config - Configurações adicionais da requisição
*
* @returns Promise com a resposta da API
*
* @example
* ```typescript
* await bridge.sendText({
* data: {
* number: '5511999999999',
* text: 'Hello World!',
* delay: 1000,
* linkPreview: true
* }
* });
* ```
*/
sendText({ data, config = {} }) {
return this.post({
url: `/message/sendText/${this.instance}`,
data,
config,
});
}
}
exports.EvolutionBridge = EvolutionBridge;