summaryrefslogtreecommitdiffstats
path: root/ipfs-cli/src/command/filestore.rs
diff options
context:
space:
mode:
authorFerris Tseng <ferristseng@fastmail.fm>2017-11-26 16:16:23 -0500
committerFerris Tseng <ferristseng@fastmail.fm>2017-11-26 16:16:23 -0500
commit1b8dfb4097998e7b76355a0ee07cbaf9f7ea7193 (patch)
tree929b2759872244e25a9009510ec2f6d6a50cd686 /ipfs-cli/src/command/filestore.rs
parenta84e726ab0a3e70accbb84afed65ad584af67b0d (diff)
add filestore calls
Diffstat (limited to 'ipfs-cli/src/command/filestore.rs')
-rw-r--r--ipfs-cli/src/command/filestore.rs83
1 files changed, 83 insertions, 0 deletions
diff --git a/ipfs-cli/src/command/filestore.rs b/ipfs-cli/src/command/filestore.rs
new file mode 100644
index 0000000..b24da2c
--- /dev/null
+++ b/ipfs-cli/src/command/filestore.rs
@@ -0,0 +1,83 @@
+// Copyright 2017 rust-ipfs-api Developers
+//
+// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
+// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
+// http://opensource.org/licenses/MIT>, at your option. This file may not be
+// copied, modified, or distributed except according to those terms.
+//
+
+use clap::{App, ArgMatches};
+use command::EXPECTED_API;
+use futures::stream::Stream;
+use ipfs_api::{response, IpfsClient};
+use tokio_core::reactor::Core;
+
+
+pub fn signature<'a, 'b>() -> App<'a, 'b> {
+ clap_app!(
+ @subcommand filestore =>
+ (@setting SubcommandRequiredElseHelp)
+ (@subcommand dups =>
+ (about: "List blocks that are both in the filestore and standard block storage")
+ )
+ (@subcommand ls =>
+ (about: "List objects in the filestore")
+ (@arg CID: "Cid of the object to list")
+ )
+ (@subcommand verify =>
+ (about: "Verify objects in the filestore")
+ (@arg CID: "Cid of the object to verify")
+ )
+ )
+}
+
+
+fn print_filestore_object<E>(obj: response::FilestoreObject) -> Result<(), E> {
+ println!(" status : {}", obj.status);
+ println!(" error_msg : {}", obj.error_msg);
+ println!(" key : {}", obj.key);
+ println!(" file_path : {}", obj.file_path);
+ println!(" offset : {}", obj.offset);
+ println!(" size : {}", obj.size);
+ println!("");
+
+ Ok(())
+}
+
+
+pub fn handle(core: &mut Core, client: &IpfsClient, args: &ArgMatches) {
+ match args.subcommand() {
+ ("dups", _) => {
+ let req = client.filestore_dups().for_each(|dup| {
+ println!(" ref : {}", dup.reference);
+ println!(" err : {}", dup.err);
+ println!("");
+
+ Ok(())
+ });
+
+ println!("");
+ core.run(req).expect(EXPECTED_API);
+ println!("");
+ }
+ ("ls", Some(args)) => {
+ let cid = args.value_of("CID");
+ let req = client.filestore_ls(&cid).for_each(print_filestore_object);
+
+ println!("");
+ core.run(req).expect(EXPECTED_API);
+ println!("");
+ }
+ ("verify", Some(args)) => {
+ let cid = args.value_of("CID");
+ let req = client.filestore_verify(&cid).for_each(
+ print_filestore_object,
+ );
+
+ println!("");
+ core.run(req).expect(EXPECTED_API);
+ println!("");
+ }
+ _ => unreachable!(),
+ }
+}