|
14 | 14 | use ActiveCollab\ContainerAccess\ContainerAccessInterface\Implementation as ContainerAccessImplementation;
|
15 | 15 | use ActiveCollab\Controller\ActionResult\Container\ActionResultContainerInterface;
|
16 | 16 | use ActiveCollab\Controller\ActionResultEncoder\ValueEncoder\ValueEncoderInterface;
|
| 17 | +use LogicException; |
17 | 18 | use Psr\Http\Message\ResponseInterface;
|
18 | 19 | use Psr\Http\Message\ServerRequestInterface;
|
| 20 | +use Psr\Http\Server\MiddlewareInterface; |
| 21 | +use Psr\Http\Server\RequestHandlerInterface; |
19 | 22 | use Psr\Log\LoggerInterface;
|
20 | 23 | use RuntimeException;
|
21 | 24 |
|
22 |
| -class ActionResultEncoder implements ActionResultEncoderInterface, ContainerAccessInterface |
| 25 | +class ActionResultEncoder implements ActionResultEncoderInterface, ContainerAccessInterface, MiddlewareInterface |
23 | 26 | {
|
24 | 27 | use ContainerAccessImplementation;
|
25 | 28 |
|
@@ -99,6 +102,21 @@ public function &addValueEncoder(ValueEncoderInterface ...$value_encoders): Acti
|
99 | 102 | return $this;
|
100 | 103 | }
|
101 | 104 |
|
| 105 | + public function process( |
| 106 | + ServerRequestInterface $request, |
| 107 | + RequestHandlerInterface $handler |
| 108 | + ): ResponseInterface |
| 109 | + { |
| 110 | + if (!$this->getEncodeOnExit()) { |
| 111 | + throw new LogicException('Action result can be encoded after handling only.'); |
| 112 | + } |
| 113 | + |
| 114 | + return $this->tryToEncodeValue( |
| 115 | + $handler->handle($request), |
| 116 | + $this->action_result_container |
| 117 | + ); |
| 118 | + } |
| 119 | + |
102 | 120 | public function __invoke(
|
103 | 121 | ServerRequestInterface $request,
|
104 | 122 | ResponseInterface $response,
|
|
0 commit comments