diff options
Diffstat (limited to 'ipfs-api/examples/mfs.rs')
-rw-r--r-- | ipfs-api/examples/mfs.rs | 85 |
1 files changed, 47 insertions, 38 deletions
diff --git a/ipfs-api/examples/mfs.rs b/ipfs-api/examples/mfs.rs index c92e212..8bea192 100644 --- a/ipfs-api/examples/mfs.rs +++ b/ipfs-api/examples/mfs.rs @@ -6,12 +6,13 @@ // copied, modified, or distributed except according to those terms. // +extern crate futures; +extern crate hyper; extern crate ipfs_api; -extern crate tokio_core; +use futures::Future; use ipfs_api::{response, IpfsClient}; use std::fs::File; -use tokio_core::reactor::Core; fn print_stat(stat: response::FilesStatResponse) { println!(" type : {}", stat.typ); @@ -28,47 +29,55 @@ fn main() { println!("note: this must be run in the root of the project repository"); println!("connecting to localhost:5001..."); - let mut core = Core::new().expect("expected event loop"); - let client = IpfsClient::default(&core.handle()); + let client = IpfsClient::default(); println!("making /test..."); println!(); - let req = client.files_mkdir("/test", false); - core.run(req).expect("expected mkdir to succeed"); + let mkdir = client.files_mkdir("/test", false); + let mkdir_recursive = client.files_mkdir("/test/does/not/exist/yet", true); - println!("making dirs /test/does/not/exist/yet..."); - println!(); - - let req = client.files_mkdir("/test/does/not/exist/yet", true); - core.run(req).expect("expected mkdir -p to succeed"); - - println!("getting status of /test/does..."); - println!(); - - let req = client.files_stat("/test/does"); - let stat = core.run(req).expect("expected stat to succeed"); - - print_stat(stat); - - println!("writing source file to /test/mfs.rs"); - println!(); + let file_stat = client.files_stat("/test/does"); let src = File::open(file!()).expect("could not read source file"); - let req = client.files_write("/test/mfs.rs", true, true, src); - - core.run(req).expect("expected write to succed"); - - let req = client.files_stat("/test/mfs.rs"); - let stat = core.run(req).expect("expected stat to succeed"); - - print_stat(stat); - - println!("removing /test..."); - println!(); - - let req = client.files_rm("/test", true); - core.run(req).expect("expected rm to succeed"); - - println!("done!"); + let file_write = client.files_write("/test/mfs.rs", true, true, src); + + let file_write_stat = client.files_stat("/test/mfs.rs"); + + let file_rm = client.files_rm("/test", true); + + hyper::rt::run( + mkdir + .and_then(|_| { + println!("making dirs /test/does/not/exist/yet..."); + println!(); + + mkdir_recursive + }) + .and_then(|_| { + println!("getting status of /test/does..."); + println!(); + + file_stat + }) + .and_then(|stat| { + print_stat(stat); + + println!("writing source file to /test/mfs.rs"); + println!(); + + file_write + }) + .and_then(|_| file_write_stat) + .and_then(|stat| { + print_stat(stat); + + println!("removing /test..."); + println!(); + + file_rm + }) + .map(|_| println!("done!")) + .map_err(|e| eprintln!("{}", e)), + ) } |