use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TorrentFile {
pub index: usize,
pub path: PathBuf,
pub size: u64,
pub selected: bool,
pub completed: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TorrentInfo {
pub info_hash: String,
pub name: String,
pub total_size: u64,
pub piece_length: u64,
pub num_pieces: usize,
pub files: Vec<TorrentFile>,
pub announce: Option<String>,
pub announce_list: Vec<Vec<String>>,
pub creation_date: Option<DateTime<Utc>>,
pub comment: Option<String>,
pub created_by: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TorrentStatusInfo {
pub files: Vec<TorrentFile>,
pub piece_length: u64,
pub pieces_count: usize,
pub private: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PeerInfo {
pub id: Option<String>,
pub ip: String,
pub port: u16,
pub client: Option<String>,
pub download_speed: u64,
pub upload_speed: u64,
pub progress: f64,
pub am_choking: bool,
pub peer_choking: bool,
}