summaryrefslogtreecommitdiff
path: root/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php')
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
new file mode 100644
index 000000000..9ad10a9b0
--- /dev/null
+++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace GuzzleHttp\Handler;
+
+use GuzzleHttp\Promise\PromiseInterface;
+use Psr\Http\Message\RequestInterface;
+
+/**
+ * HTTP handler that uses cURL easy handles as a transport layer.
+ *
+ * When using the CurlHandler, custom curl options can be specified as an
+ * associative array of curl option constants mapping to values in the
+ * **curl** key of the "client" key of the request.
+ *
+ * @final
+ */
+class CurlHandler
+{
+ /**
+ * @var CurlFactoryInterface
+ */
+ private $factory;
+
+ /**
+ * Accepts an associative array of options:
+ *
+ * - handle_factory: Optional curl factory used to create cURL handles.
+ *
+ * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler
+ */
+ public function __construct(array $options = [])
+ {
+ $this->factory = $options['handle_factory']
+ ?? new CurlFactory(3);
+ }
+
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
+ {
+ if (isset($options['delay'])) {
+ \usleep($options['delay'] * 1000);
+ }
+
+ $easy = $this->factory->create($request, $options);
+ \curl_exec($easy->handle);
+ $easy->errno = \curl_errno($easy->handle);
+
+ return CurlFactory::finish($this, $easy, $this->factory);
+ }
+}