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编程
6,538 每月下载量
用于 45 个Crate (4 直接使用)
195KB
3.5K SLoC
ipfs-api
组件
名称 | 文档 | 包 |
---|---|---|
ipfs-api-prelude | ||
ipfs-api-backend-actix | ||
ipfs-api-backend-hyper | ||
ipfs-api (已弃用) |
使用Hyper/Actix连接到IPFS HTTP API的Rust库。
用法
使用Hyper
要使用Hyper后端,声明
[dependencies]
ipfs-api-backend-hyper = "0.6"
您可以选择指定 with-hyper-rustls
或 with-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,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何其他条款或条件。
依赖关系
~7–17MB
~237K SLoC