Curl::sendRequest()   A
last analyzed

Complexity

Conditions 4
Paths 12

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 4

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 4
eloc 15
c 2
b 0
f 0
nc 12
nop 2
dl 0
loc 24
ccs 15
cts 15
cp 1
crap 4
rs 9.7666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Buzz\Client;
6
7
use Psr\Http\Message\RequestInterface;
8
use Psr\Http\Message\ResponseInterface;
9
10
/**
11
 * @author Tobias Nyholm <[email protected]>
12
 */
13
class Curl extends AbstractCurl implements BuzzClientInterface
14
{
15 59
    public function sendRequest(RequestInterface $request, array $options = []): ResponseInterface
16
    {
17 59
        $options = $this->validateOptions($options);
18 58
        $curl = $this->createHandle();
19 58
        $responseBuilder = $this->prepare($curl, $request, $options);
20
21 58
        $curlInfo = null;
22
        try {
23 58
            curl_exec($curl);
24 58
            $this->parseError($request, curl_errno($curl), $curl);
25
26 53
            if ($options->get('expose_curl_info')) {
27 1
                $curlInfo = curl_getinfo($curl);
28
            }
29 53
        } finally {
30 58
            $this->releaseHandle($curl);
31
        }
32
33 53
        $response = $responseBuilder->getResponse();
34 53
        if (null !== $curlInfo && $value = json_encode($curlInfo)) {
35 1
            $response = $response->withHeader('__curl_info', $value);
36
        }
37
38 53
        return $response;
39
    }
40
}
41