Rust Ipfs Api

IPFS HTTP client in Rust
Alternatives To Rust Ipfs Api
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Rust Ipfs1,20525 months ago3September 23, 202063apache-2.0Rust
The InterPlanetary File System (IPFS), implemented in Rust.
Py Ipfs Http Client62777187 months ago6May 13, 201954mitPython
A python client library for the IPFS API
Java Ipfs Http Client503
13 days ago5mitJava
A Java implementation of the HTTP IPFS API
Go Ipfs Api425431005 days ago16March 01, 202232mitGo
The go interface to ipfs's HTTP API
In Web Browsers316
5 months ago66mit
Tracking the endeavor towards getting web browsers to natively support IPFS and content-addressing
Awesome Nodejs Cn217
5 years ago
Nodejs 资源大全中文版,正在翻译中。。。
Rust Ipfs Api209773 months ago24December 31, 202223apache-2.0Rust
IPFS HTTP client in Rust
Swift Ipfs Http Client169
23 years agoOctober 24, 20164mitSwift
A Swift client library for the IPFS HTTP API.
Net Ipfs Http Client114162 years ago12August 29, 20199mitC#
InterPlanetary File System client for .Net (C#, VB, F# ...)
Cpp Ipfs Http Client111
a year ago4mitC++
IPFS C++ HTTP API client library
Alternatives To Rust Ipfs Api
Select To Compare


Alternative Project Comparisons
Readme

Workflow Status Maintenance

ipfs-api

Components

Name Documentation Crate
ipfs-api-prelude Docs Crate
ipfs-api-backend-actix Docs Crate
ipfs-api-backend-hyper Docs Crate
ipfs-api (deprecated) Docs Crate

Rust library for connecting to the IPFS HTTP API using Hyper/Actix.

Usage

Using Hyper

To use the Hyper backend, declare:

[dependencies]
ipfs-api-backend-hyper = "0.6"

You can specify either with-hyper-rustls or with-hyper-tls (mutually exclusive) feature for TLS support.

Using Actix

To use the Actix backend, declare:

[dependencies]
ipfs-api-backend-actix = "0.7"

Builder Pattern

With either the Hyper or Actix backend, you can specify the with-builder feature to enable a builder pattern to use when building requests.

Usage (DEPRECATED)

[dependencies]
ipfs-api = "0.17.0"

Feature Flags (DEPRECATED)

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

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

You also have the option of using rustls instead of native tls:

[dependencies]
ipfs-api = { version = "0.17.0", features = ["with-hyper-rustls"], default-features = false }

To enable the builder pattern (default) use the with-builder feature:

[dependencies]
ipfs-api = { version = "0.17.0", features = ["with-hyper-rustls", "with-builder"], default-features = false }

Examples

Writing a file to IPFS

With Hyper
use ipfs_api::{IpfsApi, 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::{IpfsApi, 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::{IpfsApi, 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::{IpfsApi, 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

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Popular Http Projects
Popular Ipfs Projects
Popular Networking Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Rust
Http
Ipfs
Tokio