18 releases
| new 0.0.9-beta.1 | Mar 4, 2026 |
|---|---|
| 0.0.8 | Mar 1, 2026 |
| 0.0.7 | Feb 28, 2026 |
| 0.0.5 | Dec 9, 2025 |
| 0.0.1 | Sep 30, 2025 |
#469 in Compression
Used in 4 crates
140KB
2.5K
SLoC
Deboa Extras
This crate provides additional features for Deboa like compression and serialization.
Install
Either run from command line:
cargo add deboa-extras
Or add to your Cargo.toml:
deboa-extras = "0.0.1"
Features
jsonserializationmsgpackserializationxmlserializationgzipcompressionbrotlicompressiondeflatecompressionwebsocketsupportssesupport
Usage
Decompression
use deboa::{Deboa, errors::DeboaError, interceptor::DeboaCatcher, request::DeboaRequest};
use deboa_extras::{
interceptor::encoding::EncodingCatcher,
io::brotli::BrotliDecompressor,
http::serde::json::JsonBody
};
let encoding_catcher = EncodingCatcher::register_decoders(vec![Box::new(BrotliDecompressor)]);
let client = Deboa::builder()
.catch(encoding_catcher)
.build()?
let posts = DeboaRequest::get("https://jsonplaceholder.typicode.com/posts/1")?
.send_with(&client)
.await?
.body_as(JsonBody)?;
println!("{:?}", posts.raw_body());
Serialization
use deboa::{Deboa, errors::DeboaError, request::post};
use deboa_extras::http::serde::json::JsonBody;
let client = Deboa::default();
let data = Post {
id: 1,
title: "title".to_string(),
body: "body".to_string(),
user_id: 1,
};
let response = post("https://jsonplaceholder.typicode.com/posts/1")?
.body_as(JsonBody, data)?
.send_with(client)
.await?;
println!("Response Status Code: {}", response.status());
SSE
use deboa::{Deboa, Result};
use deboa_extras::http::sse::response::{IntoEventStream};
let client = Deboa::default();
let response = client.execute("https://sse.dev/test").await?.into_event_stream();
// Poll events, until the connection is closed
// please note that this is a blocking call
while let Some(event) = response.next().await {
println!("event: {}", event);
}
println!("Connection closed");
Websockets
use deboa::{Deboa, Result, request::DeboaRequestBuilder};
use deboa_extras::ws::{
io::socket::DeboaWebSocket,
protocol::{self},
request::WebsocketRequestBuilder,
response::IntoWebSocket,
};
let client = Deboa::default();
let websocket = DeboaRequestBuilder::websocket("wss://echo.websocket.org")?
.send_with(&client)
.await?
.into_websocket()
.await;
while let Ok(()) = websocket.read_message().await {
// Just keep checking messages
}
License
MIT
Author
Rogerio Pereira Araujo rogerio.araujo@gmail.com
Dependencies
~3–34MB
~631K SLoC