dokuwiki-matrixnotifierwas-plugin – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | <?php |
2 | |||
3 | namespace GuzzleHttp\Handler; |
||
4 | |||
5 | use GuzzleHttp\Promise\PromiseInterface; |
||
6 | use Psr\Http\Message\RequestInterface; |
||
7 | |||
8 | /** |
||
9 | * HTTP handler that uses cURL easy handles as a transport layer. |
||
10 | * |
||
11 | * When using the CurlHandler, custom curl options can be specified as an |
||
12 | * associative array of curl option constants mapping to values in the |
||
13 | * **curl** key of the "client" key of the request. |
||
14 | * |
||
15 | * @final |
||
16 | */ |
||
17 | class CurlHandler |
||
18 | { |
||
19 | /** |
||
20 | * @var CurlFactoryInterface |
||
21 | */ |
||
22 | private $factory; |
||
23 | |||
24 | /** |
||
25 | * Accepts an associative array of options: |
||
26 | * |
||
27 | * - handle_factory: Optional curl factory used to create cURL handles. |
||
28 | * |
||
29 | * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler |
||
30 | */ |
||
31 | public function __construct(array $options = []) |
||
32 | { |
||
33 | $this->factory = $options['handle_factory'] |
||
34 | ?? new CurlFactory(3); |
||
35 | } |
||
36 | |||
37 | public function __invoke(RequestInterface $request, array $options): PromiseInterface |
||
38 | { |
||
39 | if (isset($options['delay'])) { |
||
40 | \usleep($options['delay'] * 1000); |
||
41 | } |
||
42 | |||
43 | $easy = $this->factory->create($request, $options); |
||
44 | \curl_exec($easy->handle); |
||
45 | $easy->errno = \curl_errno($easy->handle); |
||
46 | |||
47 | return CurlFactory::finish($this, $easy, $this->factory); |
||
48 | } |
||
49 | } |