22
33namespace Commercetools \Core \Client ;
44
5- use Cache \Adapter \Filesystem \FilesystemCachePool ;
65use Commercetools \Core \Cache \CacheAdapterFactory ;
76use Commercetools \Core \Client \OAuth \ClientCredentials ;
87use Commercetools \Core \Client \OAuth \CredentialTokenProvider ;
1110use Commercetools \Core \Config ;
1211use Commercetools \Core \Error \ApiException ;
1312use Commercetools \Core \Error \DeprecatedException ;
14- use Commercetools \Core \Error \InvalidCredentialsError ;
1513use Commercetools \Core \Error \InvalidTokenException ;
16- use Commercetools \Core \Error \Message ;
1714use Commercetools \Core \Helper \CorrelationIdProvider ;
1815use Commercetools \Core \Error \InvalidArgumentException ;
1916use Commercetools \Core \Response \AbstractApiResponse ;
20- use GuzzleHttp \Client as HttpClient ;
17+ use GuzzleHttp \Client ;
2118use GuzzleHttp \Exception \RequestException ;
2219use GuzzleHttp \HandlerStack ;
2320use GuzzleHttp \MessageFormatter ;
2421use GuzzleHttp \Middleware ;
25- use League \Flysystem \Adapter \Local ;
26- use League \Flysystem \Filesystem ;
2722use Psr \Cache \CacheItemPoolInterface ;
2823use Psr \Http \Message \RequestInterface ;
2924use Psr \Http \Message \ResponseInterface ;
@@ -50,14 +45,16 @@ public function __construct()
5045 }
5146
5247 /**
48+ * @param string $clientClass
5349 * @param Config|array $config
5450 * @param LoggerInterface $logger
5551 * @param CacheItemPoolInterface|CacheInterface $cache
5652 * @param TokenProvider $provider
5753 * @param CacheAdapterFactory $cacheAdapterFactory
58- * @return HttpClient
54+ * @return Client
5955 */
60- public function createClient (
56+ public function createCustomClient (
57+ $ clientClass ,
6158 $ config ,
6259 LoggerInterface $ logger = null ,
6360 $ cache = null ,
@@ -84,7 +81,25 @@ public function createClient(
8481
8582 $ options = $ this ->getDefaultOptions ($ config );
8683
87- return $ this ->createGuzzle6Client ($ options , $ oauthHandler , $ logger , $ config ->getCorrelationIdProvider ());
84+ return $ this ->createGuzzle6Client ($ clientClass , $ options , $ oauthHandler , $ logger , $ config ->getCorrelationIdProvider ());
85+ }
86+
87+ /**
88+ * @param Config|array $config
89+ * @param LoggerInterface $logger
90+ * @param CacheItemPoolInterface|CacheInterface $cache
91+ * @param TokenProvider $provider
92+ * @param CacheAdapterFactory $cacheAdapterFactory
93+ * @return HttpClient
94+ */
95+ public function createClient (
96+ $ config ,
97+ LoggerInterface $ logger = null ,
98+ $ cache = null ,
99+ TokenProvider $ provider = null ,
100+ CacheAdapterFactory $ cacheAdapterFactory = null
101+ ) {
102+ return $ this ->createCustomClient (HttpClient::class, $ config , $ logger , $ cache , $ provider , $ cacheAdapterFactory );
88103 }
89104
90105 private function getDefaultOptions (Config $ config )
@@ -120,12 +135,15 @@ private function createConfig($config)
120135 }
121136
122137 /**
138+ * @param string $clientClass
123139 * @param array $options
124- * @param LoggerInterface|null $logger
125140 * @param OAuth2Handler $oauthHandler
126- * @return HttpClient
141+ * @param LoggerInterface|null $logger
142+ * @param CorrelationIdProvider|null $correlationIdProvider
143+ * @return Client
127144 */
128145 private function createGuzzle6Client (
146+ $ clientClass ,
129147 array $ options ,
130148 OAuth2Handler $ oauthHandler ,
131149 LoggerInterface $ logger = null ,
@@ -174,7 +192,7 @@ private function createGuzzle6Client(
174192 }), 'ctp_correlation_id ' );
175193 }
176194
177- $ client = new HttpClient ($ options );
195+ $ client = new $ clientClass ($ options );
178196
179197 return $ client ;
180198 }
0 commit comments