diff options
Diffstat (limited to 'ipfs-api/src/lib.rs')
-rw-r--r-- | ipfs-api/src/lib.rs | 287 |
1 files changed, 156 insertions, 131 deletions
diff --git a/ipfs-api/src/lib.rs b/ipfs-api/src/lib.rs index 64ea2f4..22568d8 100644 --- a/ipfs-api/src/lib.rs +++ b/ipfs-api/src/lib.rs @@ -14,145 +14,170 @@ //! //! ```toml //! [dependencies] -//! ipfs-api = "0.5.0-alpha2" +//! ipfs-api = "0.5.1" +//! ``` +//! +//! You can use `actix-web` as a backend instead of `hyper`. +//! +//! ```toml +//! [dependencies] +//! ipfs-api = { version = "0.5.1", features = ["actix"], default-features = false } +//! ``` +//! +//! ## Examples +//! +//! ### Writing a file to IPFS +//! +//! #### With Hyper +//! +//! ```no_run +//! # extern crate hyper; +//! # extern crate ipfs_api; +//! # +//! use hyper::rt::Future; +//! use ipfs_api::IpfsClient; +//! use std::io::Cursor; +//! +//! # fn main() { +//! let client = IpfsClient::default(); +//! let data = Cursor::new("Hello World!"); +//! +//! let req = client +//! .add(data) +//! .map(|res| { +//! println!("{}", res.hash); +//! }) +//! .map_err(|e| eprintln!("{}", e)); +//! +//! hyper::rt::run(req); +//! # } +//! ``` +//! +//! #### With Actix +//! +//! ```no_run +//! # extern crate actix_web; +//! # extern crate futures; +//! # extern crate ipfs_api; +//! # +//! use futures::future::Future; +//! use ipfs_api::IpfsClient; +//! use std::io::Cursor; +//! +//! # fn main() { +//! let client = IpfsClient::default(); +//! let data = Cursor::new("Hello World!"); +//! +//! let req = client +//! .add(data) +//! .map(|res| { +//! println!("{}", res.hash); +//! }) +//! .map_err(|e| eprintln!("{}", e)); +//! +//! actix_web::actix::run(|| { +//! req.then(|_| { +//! actix_web::actix::System::current().stop(); +//! Ok(()) +//! }) +//! }); +//! # } +//! ``` +//! +//! ### Reading a file from IPFS +//! +//! #### With Hyper +//! +//! ```no_run +//! # extern crate futures; +//! # extern crate hyper; +//! # extern crate ipfs_api; +//! # +//! use futures::{Future, Stream}; +//! use ipfs_api::IpfsClient; +//! use std::io::{self, Write}; +//! +//! # fn main() { +//! let client = IpfsClient::default(); +//! +//! let req = client +//! .get("/test/file.json") +//! .concat2() +//! .map(|res| { +//! let out = io::stdout(); +//! let mut out = out.lock(); +//! +//! out.write_all(&res).unwrap(); +//! }) +//! .map_err(|e| eprintln!("{}", e)); +//! +//! hyper::rt::run(req); +//! # } +//! ``` +//! +//! #### With Actix +//! +//! ```no_run +//! # extern crate futures; +//! # extern crate actix_web; +//! # extern crate ipfs_api; +//! # +//! use futures::{Future, Stream}; +//! use ipfs_api::IpfsClient; +//! use std::io::{self, Write}; +//! +//! # fn main() { +//! let client = IpfsClient::default(); +//! +//! let req = client +//! .get("/test/file.json") +//! .concat2() +//! .map(|res| { +//! let out = io::stdout(); +//! let mut out = out.lock(); +//! +//! out.write_all(&res).unwrap(); +//! }) +//! .map_err(|e| eprintln!("{}", e)); +//! +//! actix_web::actix::run(|| { +//! req.then(|_| { +//! actix_web::actix::System::current().stop(); +//! Ok(()) +//! }) +//! }); +//! # } +//! ``` +//! +//! ### Additional Examples +//! +//! There are also a bunch of examples included in the project, which +//! I used for testing +//! +//! For a list of examples, run: +//! +//! ```sh +//! $ cargo run --example +//! ``` +//! +//! You can run any of the examples with cargo: +//! +//! ```sh +//! $ cargo run -p ipfs-api --example add_file +//! ``` +//! +//! To run an example with the `actix-web` backend, use: +//! +//! ```sh +//! $ cargo run -p ipfs-api --features actix --no-default-features --example add_file //! ``` //! #[cfg(feature = "actix")] extern crate actix_multipart_rfc7578 as actix_multipart; - -/// ## Examples -/// -/// Write a file to IPFS: -/// -/// ```no_run -/// # extern crate actix_web; -/// # extern crate futures; -/// # extern crate ipfs_api; -/// # -/// use futures::future::Future; -/// use ipfs_api::IpfsClient; -/// use std::io::Cursor; -/// -/// # fn main() { -/// let client = IpfsClient::default(); -/// let data = Cursor::new("Hello World!"); -/// -/// let req = client -/// .add(data) -/// .map(|res| { -/// println!("{}", res.hash); -/// }) -/// .map_err(|e| eprintln!("{}", e)); -/// -/// tokio::runtime::current_thread::run(req); -/// # } -/// ``` -/// -/// Read a file from IPFS: -/// -/// ```no_run -/// # extern crate futures; -/// # extern crate actix_web; -/// # extern crate ipfs_api; -/// # -/// use futures::{Future, Stream}; -/// use ipfs_api::IpfsClient; -/// use std::io::{self, Write}; -/// -/// # fn main() { -/// let client = IpfsClient::default(); -/// -/// let req = client -/// .get("/test/file.json") -/// .concat2() -/// .map(|res| { -/// let out = io::stdout(); -/// let mut out = out.lock(); -/// -/// out.write_all(&res).unwrap(); -/// }) -/// .map_err(|e| eprintln!("{}", e)); -/// -/// tokio::runtime::current_thread::run(req); -/// # } -/// ``` -/// -/// There are also a bunch of examples included in the project, which -/// I used for testing -/// -/// You can run any of the examples with cargo: -/// -/// ```sh -/// $ cargo run -p ipfs-api --example add_file -/// ``` #[cfg(feature = "actix")] extern crate actix_web; -/// ## Examples -/// -/// Write a file to IPFS: -/// -/// ```no_run -/// # extern crate hyper; -/// # extern crate ipfs_api; -/// # -/// use hyper::rt::Future; -/// use ipfs_api::IpfsClient; -/// use std::io::Cursor; -/// -/// # fn main() { -/// let client = IpfsClient::default(); -/// let data = Cursor::new("Hello World!"); -/// -/// let req = client -/// .add(data) -/// .map(|res| { -/// println!("{}", res.hash); -/// }) -/// .map_err(|e| eprintln!("{}", e)); -/// -/// hyper::rt::run(req); -/// # } -/// ``` -/// -/// Read a file from IPFS: -/// -/// ```no_run -/// # extern crate futures; -/// # extern crate hyper; -/// # extern crate ipfs_api; -/// # -/// use futures::{Future, Stream}; -/// use ipfs_api::IpfsClient; -/// use std::io::{self, Write}; -/// -/// # fn main() { -/// let client = IpfsClient::default(); -/// -/// let req = client -/// .get("/test/file.json") -/// .concat2() -/// .map(|res| { -/// let out = io::stdout(); -/// let mut out = out.lock(); -/// -/// out.write_all(&res).unwrap(); -/// }) -/// .map_err(|e| eprintln!("{}", e)); -/// -/// hyper::rt::run(req); -/// # } -/// ``` -/// -/// There are also a bunch of examples included in the project, which -/// I used for testing -/// -/// You can run any of the examples with cargo: -/// -/// ```sh -/// $ cargo run -p ipfs-api --example add_file -/// ``` #[cfg(feature = "hyper")] extern crate hyper; #[cfg(feature = "hyper")] |