55namespace Sitegeist \SchemeOnYou \Application ;
66
77use Neos \Flow \Mvc \ActionRequest ;
8- use Neos \Flow \Mvc \ActionResponse ;
9- use Neos \Flow \Mvc \Controller \Arguments ;
10- use Neos \Flow \Mvc \Controller \ControllerContext ;
11- use Neos \Flow \Mvc \Controller \ControllerInterface ;
12- use Neos \Flow \Mvc \Routing \UriBuilder ;
8+ use Neos \Flow \Mvc \Controller \ActionController ;
9+ use Psr \Http \Message \ResponseInterface ;
1310use Sitegeist \SchemeOnYou \Domain \Metadata \Response ;
1411use Sitegeist \SchemeOnYou \Domain \Schema \SchemaNormalizer ;
1512
16- abstract class OpenApiController implements ControllerInterface
13+ abstract class OpenApiController extends ActionController
1714{
18- protected ActionRequest $ request ;
19-
20- protected ActionResponse $ response ;
21-
22- protected ControllerContext $ controllerContext ;
23-
24- final public function processRequest (ActionRequest $ request , ActionResponse $ response ): void
15+ final public function processRequest (ActionRequest $ request ): ResponseInterface
2516 {
2617 $ this ->request = $ request ;
27- $ this ->request ->setDispatched (true );
28- $ this ->response = $ response ;
29- $ this ->response ->setContentType ('application/json ' );
30- $ uriBuilder = new UriBuilder ();
31- $ uriBuilder ->setRequest ($ this ->request );
32- $ this ->controllerContext = new ControllerContext (
33- $ this ->request ,
34- $ this ->response ,
35- new Arguments ([]),
36- $ uriBuilder
37- );
3818
3919 $ actionName = $ request ->getControllerActionName () . 'Action ' ;
4020 if (!method_exists ($ this , $ actionName )) {
@@ -49,8 +29,13 @@ final public function processRequest(ActionRequest $request, ActionResponse $res
4929 $ result = $ this ->$ actionName (...$ parameters );
5030
5131 $ responseMetadata = Response::fromReflectionClass (new \ReflectionClass ($ result ));
52- $ this ->response ->setStatusCode ($ responseMetadata ->statusCode );
5332
54- $ this ->response ->setContent (json_encode (SchemaNormalizer::normalizeValue ($ result ), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT ));
33+ return new \GuzzleHttp \Psr7 \Response (
34+ $ responseMetadata ->statusCode ,
35+ [
36+ 'Content-Type ' => 'application/json ' ,
37+ ],
38+ \json_encode (SchemaNormalizer::normalizeValue ($ result ), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT )
39+ );
5540 }
5641}
0 commit comments