#ipfs-api #ipfs #client #api-client

ipfs-api-prelude

IPFS HTTP API客户端共享代码

6个版本 (破坏性更新)

0.6.0 2022年12月31日
0.5.0 2022年7月29日
0.4.0 2022年3月30日
0.3.0 2021年12月4日
0.1.1 2021年9月16日

#319 in Web编程

Download history 1515/week @ 2024-03-14 1710/week @ 2024-03-21 1657/week @ 2024-03-28 1182/week @ 2024-04-04 1591/week @ 2024-04-11 1270/week @ 2024-04-18 1743/week @ 2024-04-25 1468/week @ 2024-05-02 1717/week @ 2024-05-09 1821/week @ 2024-05-16 1371/week @ 2024-05-23 1518/week @ 2024-05-30 1703/week @ 2024-06-06 1751/week @ 2024-06-13 1341/week @ 2024-06-20 1447/week @ 2024-06-27

6,538 每月下载量
用于 45 个Crate (4 直接使用)

MIT/Apache

195KB
3.5K SLoC

Workflow Status Maintenance

ipfs-api

组件

名称 文档
ipfs-api-prelude Docs Crate
ipfs-api-backend-actix Docs Crate
ipfs-api-backend-hyper Docs Crate
ipfs-api (已弃用) Docs Crate

使用Hyper/Actix连接到IPFS HTTP API的Rust库。

用法

使用Hyper

要使用Hyper后端,声明

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

您可以选择指定 with-hyper-rustlswith-hyper-tls (互斥) 功能以启用TLS支持。

使用Actix

要使用Actix后端,声明

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

构建者模式

使用Hyper或Actix后端,您可以通过指定 with-builder 功能来启用用于构建请求的构建者模式。

用法(已弃用)

[dependencies]
ipfs-api = "0.17.0"

功能标志(已弃用)

您可以使用 actix-web 作为后端而不是 hyper

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

您还可以选择使用 rustls 而不是本机TLS。

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

要启用构建者模式(默认)使用 with-builder 功能

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

示例

将文件写入IPFS

使用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)
    }
}
使用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)
    }
}

从IPFS读取文件

使用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)
    }
}
使用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)
    }
}

更多示例

项目中也包含了一些示例,我使用了它们进行测试

要查看示例列表,运行

$ cargo run --example

您可以使用cargo运行任何示例

$ cargo run --example add_file

许可

以下任一许可下使用

任选其一。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何其他条款或条件。

依赖关系

~7–17MB
~237K SLoC