Completed
Pull Request — master (#9)
by Asmir
163:43 queued 133:54
created

getSubscribedEvents()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
c 0
b 0
f 0
rs 9.4285
cc 1
eloc 12
nc 1
nop 0
1
<?php
2
namespace GoetasWebservices\SoapServices\SoapClient\WssWsSecurity\Serializer;
3
4
use GoetasWebservices\SoapServices\SoapClient\Arguments\Headers\Handler\HeaderPlaceholder;
5
use JMS\Serializer\EventDispatcher\EventSubscriberInterface;
6
use JMS\Serializer\EventDispatcher\PreDeserializeEvent;
7
8
class WssSecurityHeaderEventListener implements EventSubscriberInterface
9
{
10
    /**
11
     * @var WsSecurityFilterResponse
12
     */
13
    protected $filter;
14
15
    public static function getSubscribedEvents()
16
    {
17
        return array(
18
            array(
19
                'event' => 'serializer.pre_deserialize',
20
                'method' => 'onPreDeserializeEvent',
21
                'class' => HeaderPlaceholder::class,
22
                'format' => 'xml'
23
            ),
24
            array(
25
                'event' => 'serializer.pre_deserialize',
26
                'method' => 'onPreDeserializeEvent',
27
                'class' => 'Ex\SoapEnvelope12\Messages\RequestHeaderInput',
28
                'format' => 'xml'
29
            ),
30
        );
31
    }
32
33
    public function __construct(WsSecurityFilterResponse $filter)
34
    {
35
        $this->filter = $filter;
36
    }
37
38
    public function onPreDeserializeEvent(PreDeserializeEvent $event)
39
    {
40
        $data = $event->getData();
41
42
        $envelope = dom_import_simplexml($data);
43
        $this->filter->filterDom($envelope->ownerDocument);
44
echo $envelope->ownerDocument->saveXML();
45
        $newData = simplexml_import_dom($envelope);
46
        $event->setData($newData);
47
    }
48
}
49