speedtest-tui 0.1.1

A terminal-based network speed test tool with real-time gauges and graphs
pub mod connection;
pub mod dns;
pub mod download;
pub mod interfaces;
pub mod ping;
pub mod providers;
pub mod traceroute;
pub mod upload;

use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SpeedTestResult {
    pub timestamp: DateTime<Utc>,
    pub provider: String,
    pub server: Option<String>,
    pub ping: Option<PingResult>,
    pub download: Option<SpeedResult>,
    pub upload: Option<SpeedResult>,
    pub connection_info: Option<connection::ConnectionInfo>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PingResult {
    pub latency_ms: f64,
    pub jitter_ms: f64,
    pub min_ms: f64,
    pub max_ms: f64,
    pub packet_loss_percent: f64,
    pub samples: Vec<f64>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SpeedResult {
    pub speed_mbps: f64,
    pub peak_speed_mbps: f64,
    pub bytes_transferred: u64,
    pub duration_secs: f64,
    pub samples: Vec<SpeedSample>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpeedSample {
    pub timestamp_ms: u64,
    pub speed_mbps: f64,
}

#[derive(Debug, Clone)]
#[allow(dead_code)]
pub struct SpeedProgress {
    pub current_speed_mbps: f64,
    pub average_speed_mbps: f64,
    pub bytes_transferred: u64,
    pub elapsed_secs: f64,
    pub progress_percent: f64,
}