fliq/ipfs

ipfs API 库

v0.1.1 2022-08-03 14:17 UTC

This package is auto-updated.

Last update: 2024-09-16 05:01:08 UTC


README

Latest Version on Packagist Total Downloads

使用RPC API与IPFS交互。

查看contributing.md以获取待办事项清单。

安装

通过Composer

composer require fliq/ipfs

使用

要开始使用IPFS,请访问IPFS文档

此包使用Guzzle,每个请求都使用requestAsync方法进行,并且Ipfs类上的每个方法都返回一个guzzles的PromiseInterface

ipfs客户端有两种模式:‘api’和‘gateway’。网关对公开读取操作可用,而API可以写入。

use Fliq\Ipfs\Ipfs;

$ipfs = new Ipfs('localhost', '8080', 'http', 'gateway');

$data = $ipfs->cat('QmSgvgwxZGaBLqkGyWemEDqikCqU52XxsYLKtdy3vGZ8uq')->wait(); // spaceship-launch.jpg

要写入文件,您必须在‘api’模式下。

use Fliq\Ipfs\Ipfs;

$ipfs = new Ipfs('localhost', '5001', 'http', 'api');

$result = $ipfs->add('Hello, IPFS')->wait();

$cid = $result[0]['Hash']; // content identifier

您可以使用支持字符串、PHP资源和将数组编码为JSON的功能,以及将多个文件一次性添加到目录中,灵活地将文件添加到IPFS。

use GuzzleHttp\Psr7\Utils;

$ipfs = new Ipfs('localhost', '5001', 'http', 'api');

$file = Utils::tryFopen('path/to/file.jpeg')

$results = $ipfs->add([
    'file.jpeg' => $file,
    'meta.json' => [
        'name' => 'My file',
        'description' => 'file description',
        'properties' => [...],
    ],
], ['wrap-with-directory' => true])->wait();

$directoryCid = $results[2]['Hash'];

从IPFS检索数据。使用cat方法,您可以得到一个Psr7流作为结果,但为了方便,您还可以使用get()json()方法来读取文件。

$data = $ipfs->cat('Qm...')
               ->then(fn($stream) => $stream->getContents())
               ->then(fn($str) => json_decode($str, 1))
               ->wait();

// is the same as.

$data = $ipfs->get('Qm...')
             ->then(fn($str) => json_decode($str, 1))
             ->wait();

// is the same as

$data = $ipfs->json('Qm...')->wait();

由于每个请求都是异步的,您可以同时发出多个请求。

use GuzzleHttp\Promise;

$promises = [];

$promises[] = $ipfs->add('Hello, IPFS');
$promises[] = $ipfs->cat('QmSgvgwxZGaBLqkGyWemEDqikCqU52XxsYLKtdy3vGZ8uq');

$responses = Promise\Utils::unwrap($promises);

最后,您可以使用call()方法调用任何端点。

$ipfs->call('name/resolve', ['query' => $args])->then(function(Response $response) {
    // handle response.
});

方法

version()

获取Kubo节点信息。

add()

将文件添加到IPFS

cat()

读取文件,返回一个流

get()

读取文件,返回一个字符串

json()

读取文件,返回一个数组

ls()

从CID读取内容

call()

将要调用

变更日志

有关最近更改的更多信息,请参阅changelog

测试

您需要一个本地运行的IPFS节点来测试使用localhost。

./vendor/bin/pest

贡献

有关详细信息和一个待办事项清单,请参阅contributing.md

安全

如果您发现任何安全问题,请通过author@email.com发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可

MIT。有关更多信息,请参阅许可文件