summaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-01-04 18:57:49 +0200
committerLars Wirzenius <liw@liw.fi>2021-01-04 20:02:06 +0200
commit8efabc60f87e5462b01f4832d575f68382929624 (patch)
tree422b3941b6867871486df2198aef0e431c6b95ac /src/cmd
parent650b7cee5700eae9ab6c300fbdb816dead6f01f5 (diff)
downloadobnam2-8efabc60f87e5462b01f4832d575f68382929624.tar.gz
feat: verify checksum of chunks downloaded from server
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/get_chunk.rs15
-rw-r--r--src/cmd/mod.rs3
2 files changed, 18 insertions, 0 deletions
diff --git a/src/cmd/get_chunk.rs b/src/cmd/get_chunk.rs
new file mode 100644
index 0000000..bf653ff
--- /dev/null
+++ b/src/cmd/get_chunk.rs
@@ -0,0 +1,15 @@
+use crate::chunkid::ChunkId;
+use crate::client::BackupClient;
+use crate::client::ClientConfig;
+use std::io::{stdout, Write};
+
+pub fn get_chunk(config: &ClientConfig, chunk_id: &str) -> anyhow::Result<()> {
+ let client = BackupClient::new(&config.server_url)?;
+ let chunk_id: ChunkId = chunk_id.parse().unwrap();
+ let chunk = client.fetch_chunk(&chunk_id)?;
+
+ let stdout = stdout();
+ let mut handle = stdout.lock();
+ handle.write_all(chunk.data())?;
+ Ok(())
+}
diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs
index 2919d88..c3cebe2 100644
--- a/src/cmd/mod.rs
+++ b/src/cmd/mod.rs
@@ -9,3 +9,6 @@ pub use list_files::list_files;
pub mod restore;
pub use restore::restore;
+
+pub mod get_chunk;
+pub use get_chunk::get_chunk;