Completed
Push — master ( c49bab...4e6055 )
by David
05:15
created

HeaderCacheKeyGenerator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 1
dl 0
loc 27
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A generate() 0 9 2
1
<?php
2
3
namespace Http\Client\Common\Plugin\Cache\Generator;
4
5
use Psr\Http\Message\RequestInterface;
6
7
/**
8
 * Generate a cache key by using HTTP headers.
9
 *
10
 * @author Tobias Nyholm <[email protected]>
11
 */
12
class HeaderCacheKeyGenerator implements CacheKeyGenerator
13
{
14
    /**
15
     * The header names we should take into account when creating the cache key.
16
     *
17
     * @var array
18
     */
19
    private $headerNames;
20
21
    /**
22
     * @param $headerNames
23
     */
24 3
    public function __construct(array $headerNames)
25
    {
26 3
        $this->headerNames = $headerNames;
27 3
    }
28
29 1
    public function generate(RequestInterface $request)
30
    {
31 1
        $concatenatedHeaders = [];
32 1
        foreach ($this->headerNames as $headerName) {
33 1
            $concatenatedHeaders[] = sprintf(' %s:"%s"', $headerName, $request->getHeaderLine($headerName));
34 1
        }
35
36 1
        return $request->getMethod().' '.$request->getUri().implode('', $concatenatedHeaders).' '.$request->getBody();
37
    }
38
}
39