1use tokio;
2use threema_client::blob_api;
3use std::io::prelude::*;
4use env_logger;
5
6#[tokio::main]
7async fn main(){
8 env_logger::init();
9 let argv = std::env::args().collect::<Vec<_>>();
10 let hexid;
11 let mark_done;
12 if argv.len() == 2 {
13 hexid = &argv[1];
14 mark_done = false;
15 }
16 else if argv.len() == 3 && argv[1] == "-d" {
17 hexid = &argv[2];
18 mark_done = true;
19 }
20 else {
21 eprintln!("usage: {} HEXBLOBREF", std::env::args().next().unwrap());
22 std::process::exit(1);
23 }
24 let blobref = blob_api::BlobRef::from_hex(hexid).expect("invalid id given.");
25 let c = blob_api::Client::new();
26 let blob = c.download(&blobref).await.expect("retrieving blob");
27 std::io::stdout().lock().write_all(&blob).expect("write out failed");
28 if mark_done {
29 c.mark_done(&blobref.id).await.expect("mark_done failed");
30 }
31}