[][src]Crate ipfs_api

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

Usage

[dependencies]
ipfs-api = "0.5.1"

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

[dependencies]
ipfs-api = { version = "0.5.1", features = ["actix"], default-features = false }

Examples

Writing a file to IPFS

With Hyper

use hyper::rt::Future;
use ipfs_api::IpfsClient;
use std::io::Cursor;

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

use futures::future::Future;
use ipfs_api::IpfsClient;
use std::io::Cursor;

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

use futures::{Future, Stream};
use ipfs_api::IpfsClient;
use std::io::{self, Write};

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

use futures::{Future, Stream};
use ipfs_api::IpfsClient;
use std::io::{self, Write};

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:

$ cargo run --example

You can run any of the examples with cargo:

$ cargo run -p ipfs-api --example add_file

To run an example with the actix-web backend, use:

$ cargo run -p ipfs-api --features actix --no-default-features --example add_file

Modules

response

This module contains structures returned by the IPFS API.

Structs

IpfsClient

Asynchronous Ipfs client.

Enums

KeyType
Logger
LoggingLevel
ObjectTemplate