Expand description
§Deboa Extras
deboa-extras is an extension crate for the deboa HTTP client that provides additional
functionality and utilities for working with HTTP requests and responses.
§Features
- HTTP Utilities: Additional HTTP-related functionality including:
- Server-Sent Events (SSE) support
- WebSocket client (when
websocketsfeature is enabled) - Enhanced serialization/deserialization
- Compression: Support for compressed request/response bodies (when
compressionfeature is enabled) - Error Handling: Extended error types and utilities
- Catchers: Pre-built error handlers for common scenarios
§Crate Features
compression: Enables compression support (gzip, deflate, brotli)websockets: Enables WebSocket client functionalityjson: Enables JSON serialization/deserializationmsgpack: Enables MessagePack serialization/deserializationxml: Enables XML serialization/deserializationyaml: Enables YAML serialization/deserializationflex: Enables flexbuffers serialization/deserialization
§Examples
§Using Server-Sent Events (SSE)
ⓘ
use deboa_extras::http::sse::SseRequest;
use futures_util::StreamExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut client = deboa::Deboa::new();
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");
Ok(())
}§Using WebSockets
ⓘ
use deboa::{Deboa, Result, request::DeboaRequestBuilder};
use deboa_extras::ws::{
io::socket::DeboaWebSocket,
protocol::{self},
request::WebsocketRequestBuilder,
response::IntoWebSocket,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut client = deboa::Deboa::new();
let websocket = DeboaRequestBuilder::connect("wss://echo.websocket.org").send_with(&mut client).await?;
// Send a message
websocket.send_text("Hello, WebSocket!".into()).await?;
// Receive messages
while let Ok(Some(msg)) = websocket.read_message().await {
match msg {
protocol::Message::Text(text) => println!("Received text: {}", text),
protocol::Message::Binary(data) => println!("Received binary data: {} bytes", data.len()),
}
}
Ok(())
}Modules§
- catcher
- errors
- http
- io
- ws
- WebSocket support for deboa-extras.
Provides WebSocket client functionality with message encoding/decoding.
Supports text and binary message types with automatic serialization.
Includes support for various serialization formats through the serialization feature.
Requires the
websocketsfeature to be enabled.