SymfonyHttpClient::fetch()   A
last analyzed

Complexity

Conditions 4
Paths 7

Size

Total Lines 40
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 25
c 1
b 0
f 0
nc 7
nop 1
dl 0
loc 40
ccs 0
cts 22
cp 0
crap 20
rs 9.52
1
<?php
2
3
/*
4
 * This file is part of CacheTool.
5
 *
6
 * (c) Samuel Gordalina <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace CacheTool\Adapter\Http;
13
14
use Symfony\Component\HttpClient\HttpClient;
15
use Symfony\Component\HttpFoundation\Response;
16
17
class SymfonyHttpClient extends AbstractHttp
18
{
19
    private $client;
20
21 2
    public function __construct($baseUrl, $httpClientConfig)
22
    {
23 2
        $this->client = HttpClient::create($httpClientConfig);
24 2
        parent::__construct($baseUrl);
25 2
    }
26
27
    public function fetch($filename)
28
    {
29
        try {
30
            $url = "{$this->baseUrl}/{$filename}";
31
32
            if (!filter_var($url, FILTER_VALIDATE_URL)) {
33
                throw new \RuntimeException(
34
                    sprintf(
35
                        "The given url is not valid: %s, did you forget to specify the --web-url option?",
36
                        $url
37
                    )
38
                );
39
            }
40
41
            $response = $this->client->request('GET', $url);
42
43
            if ($response->getStatusCode() !== Response::HTTP_OK) {
44
                throw new \RuntimeException(
45
                    sprintf(
46
                        "HTTP Response Code for URL %s is not 200, it is: %s",
47
                        $url,
48
                        $response->getStatusCode()
49
                    )
50
                );
51
            }
52
53
            return $response->getContent();
54
55
        } catch (\Throwable $throwable) {
56
57
            return serialize([
58
                'result' => false,
59
                'errors' => [
60
                    [
61
                        'no' => $throwable->getCode(),
62
                        'str' => sprintf(
63
                            "%s: %s,\n%s",
64
                            get_class($throwable),
65
                            $throwable->getMessage(),
66
                            $throwable->getTraceAsString()
67
                        )
68
                    ],
69
                ],
70
            ]);
71
72
        }
73
    }
74
}
75