deboa 0.0.6

A friendly rest client on top of hyper.
Documentation
use http::StatusCode;
use thiserror::Error;

#[derive(Debug, Clone, Error, PartialEq)]
pub enum DeboaError {
    #[error("Invalid cookie header: {message}")]
    Cookie { message: String },

    #[error("Invalid client certificate: {message}")]
    ClientCert { message: String },

    #[error("Invalid header: {message}")]
    Header { message: String },

    #[error("Could not connect to {host}: {message}")]
    Connection { host: String, message: String },

    #[error("Failed to send request: {method} {url}: {message}")]
    Request {
        url: String,
        method: String,
        message: String,
    },

    #[error("Failed to receive response: {status_code}: {message}")]
    Response {
        status_code: StatusCode,
        message: String,
    },

    #[error("Failed to process response: {message}")]
    ProcessResponse { message: String },

    #[error("Unsupported scheme: {message}")]
    UnsupportedScheme { message: String },

    #[error("Failed to serialize data: {message}")]
    Serialization { message: String },

    #[error("Failed to deserialize data: {message}")]
    Deserialization { message: String },

    #[error("Failed to parse url: {message}")]
    UrlParse { message: String },

    #[error("Failed to compress data: {message}")]
    Compress { message: String },

    #[error("Failed to decompress data: {message}")]
    Decompress { message: String },

    #[error("Failed to write file: {message}")]
    Io { message: String },

    #[error("Websocket error: {0}")]
    WebSocket(#[from] WebSocketError),

    #[error("SSE error: {0}")]
    SSE(#[from] SSEError),
}

#[derive(Debug, Clone, Error, PartialEq)]
pub enum WebSocketError {
    #[error("Failed to send message: {message}")]
    SendMessage { message: String },

    #[error("Failed to receive message: {message}")]
    ReceiveMessage { message: String },
}

#[derive(Debug, Clone, Error, PartialEq)]
pub enum SSEError {
    #[error("Failed to receive event: {message}")]
    ReceiveEvent { message: String },
}