Svyaz Logo
📡 Ministério de Comunicações da URSS (Связь)

Svyaz (sv)

Micro cliente HTTP/HTTPS em Rust puro com TLS embutido, binário estático e subset compatível com curl para ambientes minimalistas e automação.

Repositório no Codeberg Ver Exemplos de Uso

🔒 Rustls Nativo

TLS 1.2 e 1.3 em Rust puro, sem acoplamento a bibliotecas OpenSSL ou C externas.

⚡ Drop-in curl Subset

Aceita as flags fundamentais do curl (-s, -f, -o, -m, -w, -fsSL) diretamente.

📦 Estático & Ultraleve

Binário único e independente (< 4MB) pronto para BusyBox, Alpine Linux e containers.

📥 Instalação

Clone e compile diretamente usando o gerenciador de pacotes do Rust (Cargo):

# Instalação rápida via Cargo
git clone ssh://git@codeberg.org/lumenpink/svyaz.git
cd svyaz
cargo install --path .

# Os binários 'svyaz' e 'sv' ficarão disponíveis no seu PATH

🚀 Exemplos de Uso

O Svyaz pode ser executado tanto pelo nome completo quanto pelo atalho de duas letras sv:

# 1. Requisição GET simples
sv https://api.github.com/zen

# 2. Chamada silenciosa com timeout de 3 segundos
sv -s -m 3 https://codeberg.org/api/v1/version

# 3. Download de arquivo com redirecionamentos (idêntico a curl -fsSL)
sv -fsSL https://example.com/archive.tar.gz -o /tmp/archive.tar.gz

# 4. Requisição POST com JSON e Token
sv -X POST \
  -H "Authorization: token $CODEBERG_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Nova issue"}' \
  "https://codeberg.org/api/v1/repos/lumenpink/svyaz/issues"

# 5. Capturar apenas o status code HTTP (200, 404, etc.)
sv -s -o /dev/null -w "%{http_code}\n" https://codeberg.org/api/v1/version

⚙️ Tabela de Opções

Opção Compatibilidade curl Descrição
-X, --request Sim Especifica o método HTTP (GET, POST, PUT, PATCH, HEAD)
-H, --header Sim Passa cabeçalho HTTP customizado (ex: -H "Authorization: token xxx")
-d, --data Sim Corpo da requisição POST/PUT/PATCH (string, @arquivo ou -)
-s, --silent Sim Modo silencioso (sem saída de progresso na stderr)
-f, --fail Sim Retorna exit code 22 em erros HTTP 4xx ou 5xx
-o, --output Sim Grava corpo da resposta em arquivo em vez do stdout
-m, --max-time Sim Tempo limite máximo da requisição em segundos
-w, --write-out Sim Formata saída final (suporta %{http_code}, \n, \t)
-I, --head Sim Executa requisição HEAD
-L, --location Sim Segue redirecionamentos HTTP 3xx automaticamente
-fsSL Sim Combinação de flags padrão para downloads silenciosos e resilientes

🛠️ Integração com o Ecossistema CCCP

O Svyaz substitui o curl em ambientes sem binários externos nos seguintes módulos: