Skip to content

Commit 9a1848e

Browse files
authored
Merge pull request #20 from wobblecode/feature/event-pre-serialize
Feature/event pre serialize
2 parents 0128ee2 + 3cafc2f commit 9a1848e

File tree

4 files changed

+124
-89
lines changed

4 files changed

+124
-89
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace WobbleCode\RestBundle\Event;
4+
5+
use Symfony\Component\EventDispatcher\Event;
6+
use WobbleCode\RestBundle\Configuration\Rest;
7+
8+
class PreSerializeConfigurationEvent extends Event
9+
{
10+
public const NAME = 'wobblecode_rest.pre_serialize_configuration';
11+
12+
protected $configuration;
13+
14+
public function __construct(Rest $configuration)
15+
{
16+
$this->configuration = $configuration;
17+
}
18+
19+
public function getConfiguration(): Rest
20+
{
21+
return $this->configuration;
22+
}
23+
}

EventListener/RestSubscriber.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace WobbleCode\RestBundle\EventListener;
1313

14+
use WobbleCode\RestBundle\Event\PreSerializeConfigurationEvent;
1415
use Symfony\Component\HttpFoundation\Response;
1516
use Symfony\Component\HttpFoundation\Request;
1617
use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -21,6 +22,7 @@
2122
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
2223
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
2324
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
25+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
2426
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
2527
use JMS\Serializer\Serializer;
2628
use JMS\Serializer\SerializationContext;
@@ -61,8 +63,10 @@ class RestSubscriber implements EventSubscriberInterface
6163
*/
6264
public function __construct(
6365
Serializer $serializer,
64-
MapperInterface $errorMapper
66+
MapperInterface $errorMapper,
67+
EventDispatcherInterface $eventDispatcher
6568
) {
69+
$this->dispatcher = $eventDispatcher;
6670
$this->serializationContext = new SerializationContext();
6771
$this->serializationContext->setSerializeNull(true);
6872
$this->serializationContext->enableMaxDepthChecks();
@@ -201,7 +205,10 @@ public function onKernelView(GetResponseForControllerResultEvent $event)
201205
return;
202206
};
203207

204-
$restConfig = $request->attributes->get('_rest');
208+
$preRestConfig = $request->attributes->get('_rest');
209+
$restEvent = new PreSerializeConfigurationEvent($preRestConfig);
210+
$this->dispatcher->dispatch(PreSerializeConfigurationEvent::NAME, $restEvent);
211+
$restConfig = $restEvent->getConfiguration();
205212
$parameters = $event->getControllerResult();
206213

207214
/**

Resources/config/services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,6 @@ services:
5555
arguments:
5656
- "@jms_serializer.serializer"
5757
- "@wobblecode.restbundle.mapper.validator_error"
58+
- "@event_dispatcher"
5859
tags:
5960
- { name: kernel.event_subscriber }

0 commit comments

Comments
 (0)