From a779ef71f35a7901eac4e8569e4da53ae3925188 Mon Sep 17 00:00:00 2001 From: Jaeger Date: Mon, 10 Dec 2018 19:23:15 +0800 Subject: [PATCH] add MultiRequest --- src/Dom/Query.php | 2 +- src/Providers/HttpServiceProvider.php | 5 +++ src/QueryList.php | 5 ++- src/Services/MultiRequestService.php | 44 +++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/Services/MultiRequestService.php diff --git a/src/Dom/Query.php b/src/Dom/Query.php index 9823206..21ca77a 100644 --- a/src/Dom/Query.php +++ b/src/Dom/Query.php @@ -7,7 +7,7 @@ namespace QL\Dom; -use Illuminate\Support\Collection; +use Tightenco\Collect\Support\Collection; use phpQuery; use QL\QueryList; use Closure; diff --git a/src/Providers/HttpServiceProvider.php b/src/Providers/HttpServiceProvider.php index aed001a..d12ad08 100644 --- a/src/Providers/HttpServiceProvider.php +++ b/src/Providers/HttpServiceProvider.php @@ -11,6 +11,7 @@ namespace QL\Providers; use QL\Contracts\ServiceProviderContract; use QL\Kernel; use QL\Services\HttpService; +use QL\Services\MultiRequestService; class HttpServiceProvider implements ServiceProviderContract { @@ -27,5 +28,9 @@ class HttpServiceProvider implements ServiceProviderContract $kernel->bind('postJson',function (...$args){ return HttpService::postJson($this,...$args); }); + + $kernel->bind('multiRequest',function (...$args){ + return new MultiRequestService($this,...$args); + }); } } \ No newline at end of file diff --git a/src/QueryList.php b/src/QueryList.php index 5f3abeb..f3c4bfa 100644 --- a/src/QueryList.php +++ b/src/QueryList.php @@ -14,8 +14,10 @@ namespace QL; use phpQuery; use QL\Dom\Query; -use Illuminate\Support\Collection; +use Tightenco\Collect\Support\Collection; use Closure; +use QL\Services\MultiRequestService; + /** * Class QueryList @@ -36,6 +38,7 @@ use Closure; * @method QueryList get($url,$args = null,$otherArgs = []) * @method QueryList post($url,$args = null,$otherArgs = []) * @method QueryList postJson($url,$args = null,$otherArgs = []) + * @method MultiRequestService multiRequest($urls) * @method QueryList use($plugins,...$opt) * @method QueryList pipe(Closure $callback = null) */ diff --git a/src/Services/MultiRequestService.php b/src/Services/MultiRequestService.php new file mode 100644 index 0000000..f58dd05 --- /dev/null +++ b/src/Services/MultiRequestService.php @@ -0,0 +1,44 @@ + + * Date: 18/12/10 + * Time: 下午7:05 + */ + +namespace QL\Services; + + +use Jaeger\GHttp; +use Closure; + +class MultiRequestService +{ + protected $ql; + protected $multiRequest; + public function __construct($ql,$urls) + { + $this->ql = $ql; + $this->multiRequest = GHttp::multiRequest($urls); + } + + public function __call($name, $arguments) + { + return $this->multiRequest->$name(...$arguments); + } + + public function success(Closure $success) + { + return $this->multiRequest->success(function($response, $index) use($success){ + $this->ql->setHtml((String)$response->getBody()); + $success($this->ql,$response, $index); + }); + } + + public function error(Closure $error) + { + return $this->multiRequest->error(function($reason, $index) use($error){ + $error($this->ql,$reason, $index); + }); + } +} \ No newline at end of file