RouteDispatcher: Allow installation into sub directory
This commit is contained in:
parent
66038eda14
commit
aa2124f655
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Engelsystem\Middleware;
|
namespace Engelsystem\Middleware;
|
||||||
|
|
||||||
|
use Engelsystem\Http\Request;
|
||||||
use FastRoute\Dispatcher as FastRouteDispatcher;
|
use FastRoute\Dispatcher as FastRouteDispatcher;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
@ -44,7 +45,12 @@ class RouteDispatcher implements MiddlewareInterface
|
||||||
*/
|
*/
|
||||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||||
{
|
{
|
||||||
$route = $this->dispatcher->dispatch($request->getMethod(), urldecode($request->getUri()->getPath()));
|
$path = $request->getUri()->getPath();
|
||||||
|
if ($request instanceof Request) {
|
||||||
|
$path = $request->getPathInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
$route = $this->dispatcher->dispatch($request->getMethod(), urldecode($path));
|
||||||
|
|
||||||
$status = $route[0];
|
$status = $route[0];
|
||||||
if ($status == FastRouteDispatcher::NOT_FOUND) {
|
if ($status == FastRouteDispatcher::NOT_FOUND) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Engelsystem\Test\Unit\Middleware;
|
namespace Engelsystem\Test\Unit\Middleware;
|
||||||
|
|
||||||
|
use Engelsystem\Http\Request;
|
||||||
use Engelsystem\Middleware\RouteDispatcher;
|
use Engelsystem\Middleware\RouteDispatcher;
|
||||||
use FastRoute\Dispatcher as FastRouteDispatcher;
|
use FastRoute\Dispatcher as FastRouteDispatcher;
|
||||||
use PHPUnit\Framework\MockObject\MockObject;
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
|
@ -127,7 +128,7 @@ class RouteDispatcherTest extends TestCase
|
||||||
/** @var ResponseInterface|MockObject $response */
|
/** @var ResponseInterface|MockObject $response */
|
||||||
$response = $this->getMockForAbstractClass(ResponseInterface::class);
|
$response = $this->getMockForAbstractClass(ResponseInterface::class);
|
||||||
/** @var ServerRequestInterface|MockObject $request */
|
/** @var ServerRequestInterface|MockObject $request */
|
||||||
$request = $this->getMockForAbstractClass(ServerRequestInterface::class);
|
$request = $this->createMock(Request::class);
|
||||||
/** @var RequestHandlerInterface|MockObject $handler */
|
/** @var RequestHandlerInterface|MockObject $handler */
|
||||||
$handler = $this->getMockForAbstractClass(RequestHandlerInterface::class);
|
$handler = $this->getMockForAbstractClass(RequestHandlerInterface::class);
|
||||||
/** @var UriInterface|MockObject $uriInterface */
|
/** @var UriInterface|MockObject $uriInterface */
|
||||||
|
@ -139,9 +140,12 @@ class RouteDispatcherTest extends TestCase
|
||||||
$request->expects($this->atLeastOnce())
|
$request->expects($this->atLeastOnce())
|
||||||
->method('getUri')
|
->method('getUri')
|
||||||
->willReturn($uriInterface);
|
->willReturn($uriInterface);
|
||||||
|
$request->expects($this->atLeastOnce())
|
||||||
|
->method('getPathInfo')
|
||||||
|
->willReturn('/foo%21bar');
|
||||||
$uriInterface->expects($this->atLeastOnce())
|
$uriInterface->expects($this->atLeastOnce())
|
||||||
->method('getPath')
|
->method('getPath')
|
||||||
->willReturn('/foo%21bar');
|
->willReturn('/lorem/foo%21bar');
|
||||||
|
|
||||||
return [$dispatcher, $response, $request, $handler];
|
return [$dispatcher, $response, $request, $handler];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue