Completed
Push — feature/EVO-8346_remove_reques... ( 0564d9 )
by Bastian
08:40
created

StripHeaderRequestListener::onKernelRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 7
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
/**
3
 * ResponseListener for removing named header fields.
4
 */
5
6
namespace Graviton\RestBundle\Listener;
7
8
use Graviton\RestBundle\Event\RestEvent;
9
use Symfony\Component\HttpFoundation\Request;
10
11
/**
12
 * Class StripHeaderRequestListener
13
 *
14
 * @package Graviton\RestBundle\Listener
15
 *
16
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
17
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
18
 * @link     http://swisscom.ch
19
 */
20
class StripHeaderRequestListener
21
{
22
    /** @var array  */
23
    private $fieldnames = [];
24
25
    /**
26
     * StripHeaderRequestListener constructor.
27
     *
28
     * @param array $fieldnames  Name of header fields to be stripped off the request.
29
     */
30
    public function __construct(array $fieldnames = [])
31
    {
32
        $this->fieldnames = $fieldnames;
33
    }
34
35
    /**
36
     * Validate the json input to prevent errors in the following components
37
     *
38
     * @param RestEvent $event Event
39
     *
40
     * @return void
41
     */
42
    public function onKernelRequest(RestEvent $event)
43
    {
44
        $request = $event->getRequest();
45
46
        foreach ($this->fieldnames as $fieldname) {
47
            $this->removeHeaderField($request, $fieldname);
48
        }
49
    }
50
51
    /**
52
     * @param $request
53
     */
54
    private function removeHeaderField(Request $request, $fieldname)
55
    {
56
        if ($request->headers->has($fieldname)) {
57
            $request->headers->remove($fieldname);
58
        }
59
    }
60
}
61