remnawave 2.2.4

Rust SDK for Remnawave API - A comprehensive client library for interacting with Remnawave services
Documentation
pub mod api;
pub use api::*;

#[derive(Debug)]
pub struct ApiError {
    pub status_code: u16,
    pub url: String,
    pub request_body: Option<String>,
    pub response_body: String,
    pub response_headers: std::collections::HashMap<String, String>,
    pub timestamp: Option<String>,
    pub path: Option<String>,
    pub message: Option<String>,
    pub error_code: Option<String>,
    pub error: Option<String>,
}

impl std::fmt::Display for ApiError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        if let Some(msg) = &self.message {
            write!(
                f,
                "API Error [{}]: {} (code: {}) - {} | <{}>",
                self.status_code,
                msg,
                self.error_code.as_deref().unwrap_or("unknown"),
                self.error.as_deref().unwrap_or("unknown"),
                self.request_body.as_deref().unwrap_or("unknown")
            )
        } else {
            write!(
                f,
                "HTTP {} from {}: {} (code: {}) - {}",
                self.status_code,
                self.url,
                self.response_body,
                self.error_code.as_deref().unwrap_or("unknown"),
                self.error.as_deref().unwrap_or("unknown")
            )
        }
    }
}

impl std::error::Error for ApiError {}