Formatting.

This commit is contained in:
Greyscale 2024-04-14 21:16:04 +02:00
parent eb236a7836
commit ffc259e4cb
6 changed files with 33 additions and 29 deletions

View file

@ -52,8 +52,8 @@ abstract class AbstractCrudController extends AbstractController
if ($object) { if ($object) {
return $this->jsonResponse( return $this->jsonResponse(
[ [
'Status' => 'Okay', 'Status' => 'Okay',
'Action' => 'GET', 'Action' => 'GET',
$this->getService()->getTermSingular() => $object->__toArray(), $this->getService()->getTermSingular() => $object->__toArray(),
], ],
$request, $request,
@ -84,8 +84,8 @@ abstract class AbstractCrudController extends AbstractController
return $this->jsonResponse( return $this->jsonResponse(
[ [
'Status' => 'Okay', 'Status' => 'Okay',
'Action' => 'CREATE', 'Action' => 'CREATE',
$this->getService()->getTermSingular() => $object->__toArray(), $this->getService()->getTermSingular() => $object->__toArray(),
], ],
$request, $request,
@ -106,8 +106,8 @@ abstract class AbstractCrudController extends AbstractController
return $this->jsonResponse( return $this->jsonResponse(
[ [
'Status' => 'Okay', 'Status' => 'Okay',
'Action' => 'DELETE', 'Action' => 'DELETE',
$this->getService()->getTermSingular() => $array, $this->getService()->getTermSingular() => $array,
], ],
$request, $request,

View file

@ -16,9 +16,10 @@ class JsonResponseUnpackerMiddleware implements MiddlewareInterface
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{ {
$response = $handler->handle($request); $response = $handler->handle($request);
if($response->hasHeader("Content-Type") && $response->getHeader("Content-Type")[0] === "application/json" && $response instanceof Response) { if ($response->hasHeader('Content-Type') && $response->getHeader('Content-Type')[0] === 'application/json' && $response instanceof Response) {
$response = new JsonResponse($response); $response = new JsonResponse($response);
} }
return $response; return $response;
} }
} }

View file

@ -6,29 +6,28 @@ namespace Benzine\PSR;
use Ergebnis\Json\Json; use Ergebnis\Json\Json;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Slim\Psr7\Response; use Slim\Psr7\Response;
class JsonResponse implements ResponseInterface class JsonResponse implements ResponseInterface
{ {
public function __construct(protected Response $response) public function __construct(protected Response $response) {}
{
} public function getJson(): Json
public function getJson() : Json
{ {
$this->getBody()->rewind(); $this->getBody()->rewind();
$json = Json::fromString($this->getBody()->getContents()); $json = Json::fromString($this->getBody()->getContents());
$this->getBody()->rewind(); $this->getBody()->rewind();
return $json; return $json;
} }
public function setJson(Json $json) : self
public function setJson(Json $json): self
{ {
$this->getBody()->rewind(); $this->getBody()->rewind();
$this->getBody()->write($json->toString()); $this->getBody()->write($json->toString());
$this->getBody()->rewind(); $this->getBody()->rewind();
return $this; return $this;
} }
@ -101,4 +100,4 @@ class JsonResponse implements ResponseInterface
{ {
return $this->response->getReasonPhrase(); return $this->response->getReasonPhrase();
} }
} }

View file

@ -23,8 +23,7 @@ class Router
public function __construct( public function __construct(
protected Logger $logger, protected Logger $logger,
protected CachePoolChain $cachePoolChain protected CachePoolChain $cachePoolChain
) ) {}
{}
public function loadRoutesFromAnnotations( public function loadRoutesFromAnnotations(
array $controllerPaths, array $controllerPaths,
@ -53,19 +52,21 @@ class Router
foreach ($expectedClasses as $expectedClass) { foreach ($expectedClasses as $expectedClass) {
if (!class_exists($expectedClass)) { if (!class_exists($expectedClass)) {
$this->logger->warning("While loading routes from annotations in {file}, expected class {expectedClass} does not exist.", [ $this->logger->warning('While loading routes from annotations in {file}, expected class {expectedClass} does not exist.', [
'file' => $controllerFile[0], 'file' => $controllerFile[0],
'expectedClass' => $expectedClass, 'expectedClass' => $expectedClass,
]); ]);
continue; continue;
} }
$rc = new \ReflectionClass($expectedClass); $rc = new \ReflectionClass($expectedClass);
if ($rc->isAbstract()) { if ($rc->isAbstract()) {
$this->logger->warning("While loading routes from annotations in {file}, expected class {expectedClass} is abstract.", [ $this->logger->warning('While loading routes from annotations in {file}, expected class {expectedClass} is abstract.', [
'file' => $controllerFile[0], 'file' => $controllerFile[0],
'expectedClass' => $expectedClass, 'expectedClass' => $expectedClass,
]); ]);
continue; continue;
} }
@ -82,7 +83,6 @@ class Router
} }
foreach ($routeAnnotation->methods as $httpMethod) { foreach ($routeAnnotation->methods as $httpMethod) {
$newRoute = (new Route()) $newRoute = (new Route())
->setHttpMethod($httpMethod) ->setHttpMethod($httpMethod)
->setRouterPattern('/' . ltrim($routeAnnotation->path, '/')) ->setRouterPattern('/' . ltrim($routeAnnotation->path, '/'))

View file

@ -49,7 +49,7 @@ abstract class AbstractBaseTestCase extends AbstractTestCase
* *
* @return mixed method return * @return mixed method return
*/ */
public function invokeMethod(&$object, $methodName, array $parameters = []) : mixed public function invokeMethod(&$object, $methodName, array $parameters = []): mixed
{ {
$reflection = new \ReflectionClass($object::class); $reflection = new \ReflectionClass($object::class);
$method = $reflection->getMethod($methodName); $method = $reflection->getMethod($methodName);
@ -58,7 +58,7 @@ abstract class AbstractBaseTestCase extends AbstractTestCase
return $method->invokeArgs($object, $parameters); return $method->invokeArgs($object, $parameters);
} }
public function setProtectedProperty(&$object, $property, $value) : self public function setProtectedProperty(&$object, $property, $value): self
{ {
$reflection = new \ReflectionClass($object::class); $reflection = new \ReflectionClass($object::class);
$prop = $reflection->getProperty($property); $prop = $reflection->getProperty($property);

View file

@ -8,7 +8,6 @@ use Benzine\App as BenzineApp;
use Benzine\Middleware\JsonResponse; use Benzine\Middleware\JsonResponse;
use DI\Container; use DI\Container;
use Ergebnis\Json\Json; use Ergebnis\Json\Json;
use Middlewares\Utils\Factory;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
@ -151,14 +150,17 @@ trait AppTestTrait
$this->assertSame($expected, (array) json_decode($actual, true)); $this->assertSame($expected, (array) json_decode($actual, true));
} }
static protected function getHttpHandler() : SlimApp { protected static function getHttpHandler(): SlimApp
{
return self::$app return self::$app
->loadAllRoutes() ->loadAllRoutes()
->getApp() ->getApp()
->addMiddleware(new JsonResponseUnpackerMiddleware()); ->addMiddleware(new JsonResponseUnpackerMiddleware())
;
} }
static protected function send(string $method, string $uri, ?array $data = []) : ResponseInterface { protected static function send(string $method, string $uri, ?array $data = []): ResponseInterface
{
$request = new Request( $request = new Request(
method: $method, method: $method,
uri: new \GuzzleHttp\Psr7\Uri($uri), uri: new \GuzzleHttp\Psr7\Uri($uri),
@ -170,10 +172,12 @@ trait AppTestTrait
); );
$request = $request->withParsedBody(Json::fromString(json_encode($data))->decoded()); $request = $request->withParsedBody(Json::fromString(json_encode($data))->decoded());
$request = $request->withHeader('Content-Type', 'application/json'); $request = $request->withHeader('Content-Type', 'application/json');
return self::handle($request); return self::handle($request);
} }
static function handle(Request $request) : JsonResponse|Response|ResponseInterface { public static function handle(Request $request): JsonResponse | Response | ResponseInterface
{
return self::getHttpHandler()->handle($request); return self::getHttpHandler()->handle($request);
} }
} }