[−][src]Crate ipfs_api
Rust library for connecting to the IPFS HTTP API using Hyper/Actix.
Usage
[dependencies]
ipfs-api = "0.10.0"
Feature Flags
You can use actix-web
as a backend instead of hyper
.
[dependencies]
ipfs-api = { version = "0.10.0", features = ["with-actix"], default-features = false }
You also have the option of using rustls
instead of native tls:
[dependencies]
ipfs-api = { version = "0.10.0", features = ["with-hyper-rustls"], default-features = false }
To enable the builder pattern (default) use the with-builder
feature:
[dependencies]
ipfs-api = { version = "0.10.0", features = ["with-hyper-rustls", "with-builder"], default-features = false }
Examples
Writing a file to IPFS
With Hyper
use ipfs_api::IpfsClient; use std::io::Cursor; #[tokio::main] async fn main() { let client = IpfsClient::default(); let data = Cursor::new("Hello World!"); match client.add(data).await { Ok(res) => println!("{}", res.hash), Err(e) => eprintln!("error adding file: {}", e) } }
With Actix
use ipfs_api::IpfsClient; use std::io::Cursor; #[actix_rt::main] async fn main() { let client = IpfsClient::default(); let data = Cursor::new("Hello World!"); match client.add(data).await { Ok(res) => println!("{}", res.hash), Err(e) => eprintln!("error adding file: {}", e) } }
Reading a file from IPFS
With Hyper
use futures::TryStreamExt; use ipfs_api::IpfsClient; use std::io::{self, Write}; #[tokio::main] async fn main() { let client = IpfsClient::default(); match client .get("/test/file.json") .map_ok(|chunk| chunk.to_vec()) .try_concat() .await { Ok(res) => { let out = io::stdout(); let mut out = out.lock(); out.write_all(&res).unwrap(); } Err(e) => eprintln!("error getting file: {}", e) } }
With Actix
use futures::TryStreamExt; use ipfs_api::IpfsClient; use std::io::{self, Write}; #[actix_rt::main] async fn main() { let client = IpfsClient::default(); match client .get("/test/file.json") .map_ok(|chunk| chunk.to_vec()) .try_concat() .await { Ok(res) => { let out = io::stdout(); let mut out = out.lock(); out.write_all(&res).unwrap(); } Err(e) => eprintln!("error getting file: {}", e) } }
Additional Examples
There are also a bunch of examples included in the project, which I used for testing
For a list of examples, run:
$ cargo run --example
You can run any of the examples with cargo:
$ cargo run --example add_file
Modules
request | |
response | This module contains structures returned by the IPFS API. |
Structs
IpfsClient | Asynchronous Ipfs client. |
Enums
KeyType | |
Logger | |
LoggingLevel | |
ObjectTemplate |
Traits
TryFromUri |