summaryrefslogtreecommitdiff
path: root/Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php')
-rw-r--r--Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php39
1 files changed, 39 insertions, 0 deletions
diff --git a/Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php b/Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php
new file mode 100644
index 0000000..58f8813
--- /dev/null
+++ b/Postman/Postman-Mail/mailgun/vendor/php-http/client-common/src/FlexibleHttpClient.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Http\Client\Common;
+
+use Http\Client\HttpAsyncClient;
+use Http\Client\HttpClient;
+
+/**
+ * A flexible http client, which implements both interface and will emulate
+ * one contract, the other, or none at all depending on the injected client contract.
+ *
+ * @author Joel Wurtz <joel.wurtz@gmail.com>
+ */
+final class FlexibleHttpClient implements HttpClient, HttpAsyncClient
+{
+ use HttpClientDecorator;
+ use HttpAsyncClientDecorator;
+
+ /**
+ * @param HttpClient|HttpAsyncClient $client
+ */
+ public function __construct($client)
+ {
+ if (!($client instanceof HttpClient) && !($client instanceof HttpAsyncClient)) {
+ throw new \LogicException('Client must be an instance of Http\\Client\\HttpClient or Http\\Client\\HttpAsyncClient');
+ }
+
+ $this->httpClient = $client;
+ $this->httpAsyncClient = $client;
+
+ if (!($this->httpClient instanceof HttpClient)) {
+ $this->httpClient = new EmulatedHttpClient($this->httpClient);
+ }
+
+ if (!($this->httpAsyncClient instanceof HttpAsyncClient)) {
+ $this->httpAsyncClient = new EmulatedHttpAsyncClient($this->httpAsyncClient);
+ }
+ }
+}