Skip to content
Snippets Groups Projects
Unverified Commit 1ff4b7f6 authored by Roeland Jago Douma's avatar Roeland Jago Douma
Browse files

Allow registering of OCS routes with the appframework

parent 5157c5a9
No related branches found
No related tags found
Loading
...@@ -62,6 +62,61 @@ class RouteConfig { ...@@ -62,6 +62,61 @@ class RouteConfig {
// parse resources // parse resources
$this->processResources($this->routes); $this->processResources($this->routes);
/*
* OCS routes go into a different collection
*/
$oldCollection = $this->router->getCurrentCollection();
$this->router->useCollection($oldCollection.'.ocs');
// parse ocs simple routes
$this->processOCS($this->routes);
$this->router->useCollection($oldCollection);
}
private function processOCS(array $routes) {
$ocsRoutes = isset($routes['ocs']) ? $routes['ocs'] : [];
foreach ($ocsRoutes as $ocsRoute) {
$name = $ocsRoute['name'];
$postFix = '';
if (isset($ocsRoute['postfix'])) {
$postfix = $ocsRoute['postfix'];
}
$url = $ocsRoute['url'];
$verb = isset($ocsRoute['verb']) ? strtoupper($ocsRoute['verb']) : 'GET';
$split = explode('#', $name, 2);
if (count($split) != 2) {
throw new \UnexpectedValueException('Invalid route name');
}
$controller = $split[0];
$action = $split[1];
$controllerName = $this->buildControllerName($controller);
$actionName = $this->buildActionName($action);
// register the route
$handler = new RouteActionHandler($this->container, $controllerName, $actionName);
$router = $this->router->create('ocs.'.$this->appName.'.'.$controller.'.'.$action . $postfix, $url)
->method($verb)
->action($handler);
// optionally register requirements for route. This is used to
// tell the route parser how url parameters should be matched
if(array_key_exists('requirements', $ocsRoute)) {
$router->requirements($ocsRoute['requirements']);
}
// optionally register defaults for route. This is used to
// tell the route parser how url parameters should be default valued
if(array_key_exists('defaults', $ocsRoute)) {
$router->defaults($ocsRoute['defaults']);
}
}
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment