Passed
Pull Request — master (#11)
by Pol
07:45
created

RPLogsHelper::downloadLogs()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 6
nc 2
nop 2
dl 0
loc 12
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Facile\OpenIDClient\ConformanceTest\Helper;
6
7
use Http\Discovery\Psr17FactoryDiscovery;
8
use Http\Discovery\Psr18ClientDiscovery;
9
use Psr\Http\Client\ClientInterface;
10
use Psr\Http\Message\RequestFactoryInterface;
11
use Psr\Http\Message\ResponseInterface;
12
13
class RPLogsHelper
14
{
15
    /** @var ClientInterface */
16
    private $client;
17
18
    /** @var RequestFactoryInterface */
19
    private $requestFactory;
20
21
    public function __construct(?ClientInterface $client = null, ?RequestFactoryInterface $requestFactory = null)
22
    {
23
        $this->client = $client ?? Psr18ClientDiscovery::find();
24
        $this->requestFactory = $requestFactory ?? Psr17FactoryDiscovery::findRequestFactory();
25
    }
26
27
    public function clearLogs(string $root, string $rpId): void
28
    {
29
        $request = $this->requestFactory->createRequest('GET', $root . '/log/' . $rpId);
30
        $response = $this->client->sendRequest($request);
31
32
        if (! \preg_match('/Clear all test logs/', (string) $response->getBody())) {
33
            return;
34
        }
35
36
        $request = $this->requestFactory->createRequest('GET', $root . '/clear/' . $rpId);
37
38
        $this->client->sendRequest($request);
39
    }
40
41
    public function getLog(string $root, string $rpId, string $testId): ?ResponseInterface
42
    {
43
        $request = $this->requestFactory->createRequest('GET', $root . '/log/' . $rpId . '/' . $testId . '.txt');
44
45
        return $this->client->sendRequest($request);
46
    }
47
48
    public function downloadLogs(string $root, string $rpId): ?ResponseInterface
49
    {
50
        $request = $this->requestFactory->createRequest('GET', $root . '/log/' . $rpId);
51
        $response = $this->client->sendRequest($request);
52
53
        if (! \preg_match('/Download tar file/', (string) $response->getBody())) {
54
            return null;
55
        }
56
57
        $request = $this->requestFactory->createRequest('GET', $root . '/mktar/' . $rpId);
58
59
        return $this->client->sendRequest($request);
60
    }
61
}
62