PluginProbe
DecaLog / 4.4.0
DecaLog v4.4.0
3.0.2 3.1.0 3.10.0 3.2.0 3.3.0 3.4.0 3.4.1 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.7.0 3.7.1 3.8.0 3.9.0 3.9.1 4.0.0 4.1.0 4.2.0 4.3.0 4.3.1 4.4.0 4.5.0 All 75 releases
decalog / includes / libraries / http / client-common / FlexibleHttpClient.php

FlexibleHttpClient.php in DecaLog 4.4.0, at includes/libraries/http/client-common/FlexibleHttpClient.php

37 lines 1.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Http\Client\Common;
6
7 use Http\Client\HttpAsyncClient;
8 use Http\Client\HttpClient;
9 use Psr\Http\Client\ClientInterface;
10
11 /**
12 * A flexible http client, which implements both interface and will emulate
13 * one contract, the other, or none at all depending on the injected client contract.
14 *
15 * @author Joel Wurtz <joel.wurtz@gmail.com>
16 */
17 final class FlexibleHttpClient implements HttpClient, HttpAsyncClient
18 {
19 use HttpClientDecorator;
20 use HttpAsyncClientDecorator;
21
22 /**
23 * @param ClientInterface|HttpAsyncClient $client
24 */
25 public function __construct($client)
26 {
27 if (!$client instanceof ClientInterface && !$client instanceof HttpAsyncClient) {
28 throw new \TypeError(
29 sprintf('%s::__construct(): Argument #1 ($client) must be of type %s|%s, %s given', self::class, ClientInterface::class, HttpAsyncClient::class, get_debug_type($client))
30 );
31 }
32
33 $this->httpClient = $client instanceof ClientInterface ? $client : new EmulatedHttpClient($client);
34 $this->httpAsyncClient = $client instanceof HttpAsyncClient ? $client : new EmulatedHttpAsyncClient($client);
35 }
36 }
37