balpom/universal-downloader

下载指定URI(或文件)的内容。

v1.4.1 2024-05-28 15:44 UTC

This package is auto-updated.

Last update: 2024-09-28 16:26:32 UTC


README

提供指定URI(或文件位置)上内容下载的简单接口及其简单实现。

此下载器对于网站解析、处理REST API以及其他通过HTTP协议处理WEB资源的工作非常有用。本包版本包含了一个用于任何PSR-18 HTTP客户端的接口实现。计划实现一个通过Selenium WebDriver工作的实现。

要求

  • PHP >= 8.1

安装

使用composer(推荐)

composer require balpom/universal-downloader

简单下载器使用示例

$downloader = new \Balpom\UniversalDownloader\SimpleDownloader();
$downloader = $downloader->get('https://ipmy.ru/ip');
echo $downloader->content() . PHP_EOL; // Must be your IP.

PSR18下载器使用示例

PSR18下载器需要实现ResponseFactoryInterface、StreamFactoryInterface和UriFactoryInterface接口的对象,这些接口在PSR-17规范中定义。实现所有这些接口的库(一站式解决方案)是Nyholm/psr7 - 将使用它。

PSR18下载器实现还需要实现PSR-18规范中定义的ClientInterface的HTTP客户端。例如,将使用phpwebclient/webclientguzzle/guzzle

安装第三方包

composer require nyholm/psr7
composer require webclient/webclient
composer require guzzlehttp/guzzle

基于Webclient创建下载器。

$factory = new \Nyholm\Psr7\Factory\Psr17Factory();
$client = new \Webclient\Http\Webclient($factory, $factory);
// Psr17Factories(RequestFactoryInterface $request, StreamFactoryInterface $stream, UriFactoryInterface $uri)
$factories = new \Balpom\UniversalDownloader\Factory\Psr17Factories($factory, $factory, $factory, $factory);
$downloader = new \Balpom\UniversalDownloader\Downloader($client, $factories);

基于GuzzleHttp创建下载器。

$client = new \GuzzleHttp\Client();
$factory = new \Nyholm\Psr7\Factory\Psr17Factory();
$factories = new \Balpom\Downloader\Factory\Psr17Factories($factory, $factory, $factory, $factory);
// In my realisation Psr17Factory factories required.
// You may make your own realisation, bases on GuzzleHttp options (it has own Psr17Factory).
$downloader = new \Balpom\UniversalDownloader\Downloader($client, $factories);

下载URI

出于测试目的,将向网站https://ipmy.ru发送请求。

$downloader = $downloader->get('http://ipmy.ru/ip');
$result = $downloader->result();
echo $result->code(); echo PHP_EOL; // Must be 200.
echo $result->content(); echo PHP_EOL; // Must be your IP.
echo $result->mime(); echo PHP_EOL; // Must be "text/html".

更详细的示例可以在“tests/test-psr18.php”文件中找到 - 只需运行它

php tests/test-psr18.php

许可证

MIT许可证 看看LICENSE.MD