[][src]Crate ipfs_api

Rust library for connecting to the IPFS HTTP API using tokio.

Usage

[dependencies]
ipfs-api = "0.6.0"

You can use actix-web as a backend instead of hyper.

[dependencies]
ipfs-api = { version = "0.6.0", features = ["actix"], 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

response

This module contains structures returned by the IPFS API.

Structs

IpfsClient

Asynchronous Ipfs client.

Enums

KeyType
Logger
LoggingLevel
ObjectTemplate