use std::fs;
use hop_sdk::{HopClient, HopEnvironment};
const MAX_SIZE: usize = 64 * 1024 * 1024;
fn main() {
let file_path = std::env::args().nth(1).unwrap_or_else(|| {
eprintln!("Usage: cargo run --example send_file -- <file-path>");
std::process::exit(1);
});
let data = fs::read(&file_path).unwrap_or_else(|e| {
eprintln!("Error reading {file_path}: {e}");
std::process::exit(1);
});
if data.is_empty() {
eprintln!("Error: file is empty");
std::process::exit(1);
}
if data.len() > MAX_SIZE {
eprintln!(
"Error: file is {} bytes, max is {} (64 MiB)",
data.len(),
MAX_SIZE
);
std::process::exit(1);
}
eprintln!("Uploading {} bytes from {file_path}\u{2026}", data.len());
let client = HopClient::connect(HopEnvironment::Previewnet).unwrap_or_else(|e| {
eprintln!("Connection failed: {e}");
std::process::exit(1);
});
let tickets = client.send(data, 1).unwrap_or_else(|e| {
eprintln!("Send failed: {e}");
client.destroy();
std::process::exit(1);
});
let ticket_hex = hex::encode(tickets[0].encode());
eprintln!("Upload complete! Ticket:");
println!("{ticket_hex}");
eprintln!("\nTo download:\n cargo run --example receive_file -- {ticket_hex} output.bin");
client.destroy();
}