2025-06-02 23:57:17 +00:00
|
|
|
mod appstate;
|
2025-05-28 00:07:59 +00:00
|
|
|
mod cli;
|
2025-05-22 17:34:44 +00:00
|
|
|
mod sharry;
|
|
|
|
|
|
2025-05-27 14:01:09 +00:00
|
|
|
use clap::Parser;
|
2025-06-04 16:44:16 +00:00
|
|
|
use log::{debug, error, info};
|
2025-05-22 17:34:44 +00:00
|
|
|
use ureq::Agent;
|
|
|
|
|
|
2025-06-02 23:57:17 +00:00
|
|
|
use appstate::AppState;
|
2025-05-28 00:07:59 +00:00
|
|
|
use cli::Cli;
|
2025-06-04 16:44:16 +00:00
|
|
|
use sharry::{ChunkState, Share};
|
2025-05-27 14:01:09 +00:00
|
|
|
|
2025-05-17 23:57:52 +00:00
|
|
|
fn main() {
|
2025-05-22 17:34:44 +00:00
|
|
|
env_logger::init();
|
|
|
|
|
|
2025-05-28 00:07:59 +00:00
|
|
|
let args = Cli::parse();
|
|
|
|
|
info!("args: {args:?}");
|
2025-05-28 13:42:31 +00:00
|
|
|
info!("timeout: {:?}", args.get_timeout());
|
2025-05-28 00:07:59 +00:00
|
|
|
|
2025-05-22 17:34:44 +00:00
|
|
|
let agent: Agent = Agent::config_builder()
|
2025-05-28 13:42:31 +00:00
|
|
|
.timeout_global(args.get_timeout())
|
2025-05-22 17:34:44 +00:00
|
|
|
.build()
|
|
|
|
|
.into();
|
|
|
|
|
|
2025-06-02 23:57:17 +00:00
|
|
|
if let Some(state) = AppState::try_resume(&args) {
|
|
|
|
|
info!("state: {state:?}");
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-31 15:27:52 +00:00
|
|
|
let alias = args.get_alias();
|
|
|
|
|
let share = Share::create(&agent, &alias, args.get_share_request()).unwrap();
|
2025-05-26 23:56:31 +00:00
|
|
|
info!("share: {share:?}");
|
2025-05-22 21:07:49 +00:00
|
|
|
|
2025-05-28 12:35:35 +00:00
|
|
|
for file in args.files {
|
2025-06-04 16:44:16 +00:00
|
|
|
let mut file = file.start_upload(&agent, &alias, &share).unwrap();
|
2025-05-27 17:18:29 +00:00
|
|
|
info!("file: {file:?}");
|
|
|
|
|
|
2025-06-04 16:44:16 +00:00
|
|
|
loop {
|
|
|
|
|
match file.upload_chunk(&agent, &alias, args.chunk_size * 1024 * 1024) {
|
|
|
|
|
ChunkState::Ok(upl) => file = upl,
|
|
|
|
|
ChunkState::Err(upl, e) => {
|
|
|
|
|
error!("error: {e:?}");
|
|
|
|
|
file = upl;
|
|
|
|
|
}
|
2025-06-04 16:54:03 +00:00
|
|
|
ChunkState::Finished(path) => {
|
|
|
|
|
info!("Finished {:?}!", path.display());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-04 16:44:16 +00:00
|
|
|
|
|
|
|
|
debug!("file: {file:?}");
|
|
|
|
|
}
|
2025-05-26 20:31:22 +00:00
|
|
|
}
|
|
|
|
|
|
2025-05-28 14:07:29 +00:00
|
|
|
share.notify(&agent, &alias).unwrap();
|
2025-05-17 23:57:52 +00:00
|
|
|
}
|