Passed
Pull Request — master (#18)
by
unknown
08:11
created

CachingClientFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 10
c 2
b 0
f 0
dl 0
loc 27
ccs 0
cts 11
cp 0
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createClient() 0 15 1
A __construct() 0 3 1
1
<?php
2
3
namespace MadWizard\WebAuthn\Remote;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\HandlerStack;
7
use Kevinrob\GuzzleCache\CacheMiddleware;
8
use Kevinrob\GuzzleCache\Storage\Psr6CacheStorage;
9
use Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy;
10
use MadWizard\WebAuthn\Cache\CacheProviderInterface;
11
12
final class CachingClientFactory
13
{
14
    /**
15
     * @var CacheProviderInterface
16
     */
17
    private $cacheProvider;
18
19
    public function __construct(CacheProviderInterface $cacheProvider)
20
    {
21
        $this->cacheProvider = $cacheProvider;
22
    }
23
24
    public function createClient(): Client
25
    {
26
        $stack = HandlerStack::create();
27
28
        $stack->push(
29
            new CacheMiddleware(
30
                new PrivateCacheStrategy(
31
                    new Psr6CacheStorage(
32
                        $this->cacheProvider->getCachePool('http')
33
                    )
34
                )
35
            )
36
        );
37
38
        return new Client(['handler' => $stack]);
39
    }
40
}
41