| Crates.io | digisac |
| lib.rs | digisac |
| version | 0.1.0 |
| created_at | 2025-12-09 14:38:36.241337+00 |
| updated_at | 2025-12-09 14:38:36.241337+00 |
| description | Cliente Rust para autenticação e consumo da API Digisac (webhooks e mensagens) |
| homepage | |
| repository | https://github.com/nextlw/parrachos |
| max_upload_size | |
| id | 1975585 |
| size | 127,511 |
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).
A biblioteca oferece suporte para:
cargo add digisac --git https://github.com/nextlw/parrachos --package digisac
| 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) |
use digisac::{
client::{DigisacClient, SendMessageRequest},
config::EnvManager,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv::dotenv().ok();
let env = EnvManager::load()?;
let token = env.access_token.ok_or("Token não encontrado")?;
let client = DigisacClient::new(env.api_base_url, token);
let request = SendMessageRequest::builder()
.service_id("123".to_string())
.contact_id("456".to_string())
.text("Olá!".to_string())
.build();
let response = client.send_message(&request).await?;
println!("Mensagem enviada: {:?}", response);
Ok(())
}
use digisac::client::{DigisacClient, WebhookCreateRequest};
// Criar webhook
let request = WebhookCreateRequest::builder()
.url("https://example.com/webhook".to_string())
.events(vec!["message.received".to_string(), "message.sent".to_string()])
.active(Some(true))
.build();
let webhook = client.create_webhook(&request).await?;
// Listar webhooks
let webhooks = client.list_webhooks().await?;
println!("Total de webhooks: {}", webhooks.data.len());
# Listar webhooks
cargo run --bin digisac-cli -- webhooks-list --verbose
# Criar webhook
cargo run --bin digisac-cli -- webhook-create \
--url "https://example.com/webhook" \
--events "message.received,message.sent" \
--active true
# Atualizar webhook
cargo run --bin digisac-cli -- webhook-update \
--id "webhook-id" \
--url "https://new-url.com/webhook" \
--active false
# Deletar webhook
cargo run --bin digisac-cli -- webhook-delete --id "webhook-id"
# Enviar mensagem
cargo run --bin digisac-cli -- mensagem-enviar \
--service-id "123" \
--contact-id "456" \
--text "Olá, como vai?" \
--verbose
# Enviar mensagem com mídia
cargo run --bin digisac-cli -- mensagem-enviar \
--service-id "123" \
--contact-id "456" \
--text "Veja esta imagem" \
--media-url "https://example.com/image.jpg"
O servidor HTTP expõe os comandos CLI via HTTP para integração com agentes:
# Iniciar servidor
cargo run --bin digisac-server
# Health check
curl http://localhost:8082/health
# Executar comando via HTTP
curl -X POST http://localhost:8082/cli \
-H "Content-Type: application/json" \
-d '{
"command": "webhooks-list",
"args": ["--verbose"]
}'
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 DigisacConfigure DIGISAC_SERVER_URL no ambiente do agente para apontar para o servidor Digisac.
Este crate incorpora as seguintes boas práticas de Rust:
DigisacApi para abstração e testesTypedBuilder para construção type-safe de requeststhiserror para erros customizadostracing estruturado com sanitização de tokensContribuições são bem-vindas! Por favor:
git checkout -b feature/nova-funcionalidade)git commit -am 'Adiciona nova funcionalidade')git push origin feature/nova-funcionalidade)Este projeto está licenciado sob a Licença Apache 2.0 - veja o arquivo LICENSE para detalhes.