60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* UglyRouter class.
|
|
*/
|
|
namespace Alltube;
|
|
|
|
use Slim\Router;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
|
|
/**
|
|
* Extend Slim's router class in order to disable URL rewriting.
|
|
*/
|
|
class UglyRouter extends Router
|
|
{
|
|
/**
|
|
* Dispatch router for HTTP request
|
|
*
|
|
* @param ServerRequestInterface $request The current HTTP request object
|
|
*
|
|
* @return array
|
|
*
|
|
* @link https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php
|
|
*/
|
|
public function dispatch(ServerRequestInterface $request)
|
|
{
|
|
parse_str($request->getUri()->getQuery(), $args);
|
|
$uri = '/';
|
|
if (isset($args['page'])) {
|
|
$uri .= $args['page'];
|
|
}
|
|
|
|
return $this->createDispatcher()->dispatch(
|
|
$request->getMethod(),
|
|
$uri
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Build the path for a named route including the base path
|
|
*
|
|
* @param string $name Route name
|
|
* @param array $data Named argument replacement data
|
|
* @param array $queryParams Optional query string parameters
|
|
*
|
|
* @return string
|
|
*
|
|
* @throws \RuntimeException If named route does not exist
|
|
* @throws \InvalidArgumentException If required data not provided
|
|
*/
|
|
public function pathFor($name, array $data = [], array $queryParams = [])
|
|
{
|
|
$url = str_replace('/', '/?page=', $this->relativePathFor($name, $data, $queryParams));
|
|
|
|
if ($this->basePath) {
|
|
$url = $this->basePath . $url;
|
|
}
|
|
|
|
return $url;
|
|
}
|
|
}
|