From 9e7bb46dc7d69c5453240e364a4187f42b513200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=90=E5=B0=8F=E5=BF=83?= Date: Fri, 1 Jan 2021 01:55:39 +0800 Subject: [PATCH] Added Custom HttpClient --- src/Request/Request.php | 18 ++++++++++++++++++ src/Request/Traits/ClientTrait.php | 4 ++++ tests/Unit/Request/Traits/ClientTraitTest.php | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/Request/Request.php b/src/Request/Request.php index 407afb6d..20481a84 100644 --- a/src/Request/Request.php +++ b/src/Request/Request.php @@ -81,6 +81,11 @@ abstract class Request implements ArrayAccess */ public $client; + /** + * @var \AlibabaCloud\Client\Clients\Client + */ + public $httpClient; + /** * @var Uri */ @@ -286,6 +291,19 @@ public function client($clientName) return $this; } + + /** + * + * + * @param \AlibabaCloud\Client\Clients\Client $client + * @return $this + */ + public function withHttpClient(\AlibabaCloud\Client\Clients\Client $client) + { + $this->httpClient = $client; + return $this; + } + /** * @return bool * @throws ClientException diff --git a/src/Request/Traits/ClientTrait.php b/src/Request/Traits/ClientTrait.php index 37a2d22e..6fe29880 100644 --- a/src/Request/Traits/ClientTrait.php +++ b/src/Request/Traits/ClientTrait.php @@ -70,6 +70,10 @@ public function credential() */ public function httpClient() { + if ($this->httpClient){ + return $this->httpClient; + } + if (!AlibabaCloud::all()) { if (CredentialsProvider::hasCustomChain()) { CredentialsProvider::customProvider($this->client); diff --git a/tests/Unit/Request/Traits/ClientTraitTest.php b/tests/Unit/Request/Traits/ClientTraitTest.php index b5bbaafc..7a6bc19f 100644 --- a/tests/Unit/Request/Traits/ClientTraitTest.php +++ b/tests/Unit/Request/Traits/ClientTraitTest.php @@ -107,6 +107,17 @@ public function testHttpClient() $request->httpClient(); } + /** + * @throws ClientException + */ + public function testCustomHttpClient() + { + $httpClient = AlibabaCloud::accessKeyClient('key', 'secret') + ->regionId('cn-hangzhou'); + $request = AlibabaCloud::rpc()->withHttpClient($httpClient); + self::assertEquals($httpClient,$request->httpClient); + } + /** * @throws ClientException */