Completed
Pull Request — master (#14)
by Márk
06:15
created

HeaderAppendPlugin::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Http\Client\Common\Plugin;
4
5
use Http\Client\Common\Plugin;
6
use Psr\Http\Message\RequestInterface;
7
8
/**
9
 * Adds headers to the request.
10
 * If the header already exists the value will be appended to the current value.
11
 *
12
 * This only makes sense for headers that can have multiple values like 'Forwarded'
13
 *
14
 * @link https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
15
 *
16
 * @author Soufiane Ghzal <[email protected]>
17
 */
18
final class HeaderAppendPlugin implements Plugin
19
{
20
    /**
21
     * @var array
22
     */
23
    private $headers = [];
24
25
    /**
26
     * @param array $headers headers to add to the request
27
     */
28
    public function __construct(array $headers)
29
    {
30
        $this->headers = $headers;
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function handleRequest(RequestInterface $request, callable $next, callable $first)
37
    {
38
        foreach ($this->headers as $header => $headerValue) {
39
            $request = $request->withAddedHeader($header, $headerValue);
40
        }
41
42
        return $next($request);
43
    }
44
}
45