fliq / ipfs
ipfs API 库
v0.1.1
2022-08-03 14:17 UTC
Requires
- guzzlehttp/guzzle: ^7.4
Requires (Dev)
- orchestra/testbench: ~7
- pestphp/pest: ^1.21
- pestphp/pest-plugin-watch: 1.x-dev
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-16 05:01:08 UTC
README
使用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。有关更多信息,请参阅许可文件。