Digisac Rust SDK
Crate inspirado na arquitetura do paytour para consumir a API Digisac, incorporando boas práticas de Rust (macros, traits, builders e otimizações de compilação).
🎯 Funcionalidades Principais
A biblioteca oferece suporte para:
- Autenticação: Token de acesso via variáveis de ambiente
- Webhooks: CRUD completo (listar, criar, atualizar, deletar)
- Mensagens: Envio de mensagens com suporte a mídia e respostas
- CLI Completo: Interface de linha de comando para todos os endpoints
- Servidor HTTP: Wrapper que expõe comandos CLI via HTTP para integração com agentes
📊 Estatísticas
- Endpoints Implementados: 5 (webhooks e mensagens)
- Comandos CLI: 5
- Boas Práticas: Traits, builders, zero-cost abstractions, otimizações de compilação
Instalação
Variáveis de ambiente
| Variável | Descrição |
|---|---|
DIGISAC_API_BASE_URL |
URL base (default https://parrachos.digisac.co/api/v1) |
DIGISAC_ACCESS_TOKEN |
Token de autenticação (obrigatório) |
DIGISAC_SERVICE_ID |
ID do serviço (opcional) |
DIGISAC_SERVER_URL |
URL do servidor HTTP (default http://localhost:8082) |
DIGISAC_SERVER_PORT |
Porta do servidor HTTP (default 8082) |
Uso como biblioteca
Exemplo básico: Enviar mensagem
use ;
async
Exemplo: Gerenciar webhooks
use ;
// Criar webhook
let request = builder
.url
.events
.active
.build;
let webhook = client.create_webhook.await?;
// Listar webhooks
let webhooks = client.list_webhooks.await?;
println!;
CLI
Webhooks
# Listar webhooks
# Criar webhook
# Atualizar webhook
# Deletar webhook
Mensagens
# Enviar mensagem
# Enviar mensagem com mídia
Servidor HTTP
O servidor HTTP expõe os comandos CLI via HTTP para integração com agentes:
# Iniciar servidor
# Health check
# Executar comando via HTTP
Integração com Agente
O agente (agenteS.rs) registra automaticamente as seguintes ferramentas:
digisac_listar_webhooks: Lista webhooks configuradosdigisac_criar_webhook: Cria novo webhookdigisac_enviar_mensagem: Envia mensagem via Digisac
Configure DIGISAC_SERVER_URL no ambiente do agente para apontar para o servidor Digisac.
Boas Práticas Implementadas
Este crate incorpora as seguintes boas práticas de Rust:
- Traits:
DigisacApipara abstração e testes - Builders:
TypedBuilderpara construção type-safe de requests - Zero-cost abstractions: Métodos genéricos com monomorphization
- Error handling:
thiserrorpara erros customizados - Otimizações: LTO, codegen-units=1, strip symbols em release
- Logging:
tracingestruturado com sanitização de tokens
Contribuindo
Contribuições são bem-vindas! Por favor:
- Faça fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Licença
Este projeto está licenciado sob a Licença Apache 2.0 - veja o arquivo LICENSE para detalhes.