use emissary_core::{ I2cpConfig, Ntcp2Config }; use crate::pkgtoolkit::pkgtools::Package; use crate::Config; use indicatif::{ProgressBar, ProgressStyle}; use std::{collections::HashMap, path::Path}; use tokio::io::{AsyncReadExt, AsyncWriteExt, BufReader}; pub struct I2PPackage { pub config: Config, pub i2p_config: emissary_core::Config, pub index_packages: Option>, } impl I2PPackage { pub fn new(cfg: Config, i2p_cfg: emissary_core::Config) -> Self { I2PPackage { config: cfg, i2p_config: i2p_cfg, index_packages: None, } } pub async fn fetch_index(&mut self) -> Result<(), Box> { let cfg = Config::parse()?; let repo_url = &self.config.repo.repo_url; let cache_dir = &self.config.paths.cache_dir; let utl = url::Url::parse(repo_url).unwrap(); let host = utl.host_str().ok_or("No host in URL")?; let request_path = utl.path(); let request_path = if request_path.ends_with(".tar.gz") { request_path.to_string() } else { format!("{}/INDEX.tar.gz", request_path.trim_end_matches('/')) }; let StorageBundle { ntcp2_iv, ntcp2_key, profiles, router_info, routers, signing_key, static_key, ssu2_intro_key, ssu2_static_key, } = storage.load().await; Ok(()) } }