]> git.mxchange.org Git - friendica.git/blob - src/App/Router.php
Add Router to App
[friendica.git] / src / App / Router.php
1 <?php\r
2 \r
3 namespace Friendica\App;\r
4 \r
5 \r
6 use FastRoute\DataGenerator\GroupCountBased;\r
7 use FastRoute\Dispatcher;\r
8 use FastRoute\RouteCollector;\r
9 use FastRoute\RouteParser\Std;\r
10 use Friendica\Module\Itemsource;\r
11 \r
12 class Router\r
13 {\r
14         /** @var RouteCollector */\r
15         public $routeCollector;\r
16 \r
17         public function __construct(RouteCollector $routeCollector = null)\r
18         {\r
19                 if (!$routeCollector) {\r
20                         $routeCollector = new RouteCollector(new Std(), new GroupCountBased());\r
21                 }\r
22 \r
23                 $this->routeCollector = $routeCollector;\r
24         }\r
25 \r
26         public function getModuleClass($cmd)\r
27         {\r
28                 $cmd = '/' . ltrim($cmd, '/');\r
29 \r
30                 $dispatcher = new \FastRoute\Dispatcher\GroupCountBased($this->routeCollector->getData());\r
31 \r
32                 $moduleClass = null;\r
33 \r
34                 // @TODO: Enable method-specific modules\r
35                 $httpMethod = 'GET';\r
36                 $routeInfo = $dispatcher->dispatch($httpMethod, $cmd);\r
37                 if ($routeInfo[0] === Dispatcher::FOUND) {\r
38                         $moduleClass = $routeInfo[1];\r
39                 }\r
40 \r
41                 return $moduleClass;\r
42         }\r
43 }