From 63f6d2d558f4b999f3851482122f3e3589ce4cfc Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Mon, 1 Aug 2016 16:37:48 +0200 Subject: [PATCH] Allow ocs/v2.php/cloud/... routes One of the possibilities of the old OCS API is that you can define the url yourself. This PR makes this possible again by adding an optional root elemenet to the route. Routes are thus: .../ocs/v2.php// By default = apps/ This will allow for example the provisioning API etc to be in ../ovs/v2/php/cloud/users --- lib/private/AppFramework/Routing/RouteConfig.php | 8 +++++++- lib/private/Route/Router.php | 2 +- tests/lib/AppFramework/Routing/RoutingTest.php | 14 +++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php index 066c0da1138ac..e94f2e50c1d75 100644 --- a/lib/private/AppFramework/Routing/RouteConfig.php +++ b/lib/private/AppFramework/Routing/RouteConfig.php @@ -86,7 +86,13 @@ private function processOCS(array $routes) { $postfix = $ocsRoute['postfix']; } - $url = $ocsRoute['url']; + if (isset($ocsRoute['root'])) { + $root = $ocsRoute['root']; + } else { + $root = '/apps/'.$this->appName; + } + + $url = $root . $ocsRoute['url']; $verb = isset($ocsRoute['verb']) ? strtoupper($ocsRoute['verb']) : 'GET'; $split = explode('#', $name, 2); diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php index ac42c4025c20c..9df74184448e1 100644 --- a/lib/private/Route/Router.php +++ b/lib/private/Route/Router.php @@ -154,7 +154,7 @@ public function loadRoutes($app = null) { // Also add the OCS collection $collection = $this->getCollection($app.'.ocs'); - $collection->addPrefix('/ocsapp/apps/' . $app); + $collection->addPrefix('/ocsapp'); $this->root->addCollection($collection); } } diff --git a/tests/lib/AppFramework/Routing/RoutingTest.php b/tests/lib/AppFramework/Routing/RoutingTest.php index 6c8b0f40133b3..d395584d01116 100644 --- a/tests/lib/AppFramework/Routing/RoutingTest.php +++ b/tests/lib/AppFramework/Routing/RoutingTest.php @@ -24,7 +24,7 @@ public function testSimpleOCSRoute() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open'); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); } public function testSimpleRouteWithMissingVerb() @@ -42,7 +42,7 @@ public function testSimpleOCSRouteWithMissingVerb() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open'); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); } public function testSimpleRouteWithLowercaseVerb() @@ -60,7 +60,7 @@ public function testSimpleOCSRouteWithLowercaseVerb() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open'); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); } public function testSimpleRouteWithRequirements() @@ -78,7 +78,7 @@ public function testSimpleOCSRouteWithRequirements() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', ['something']); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', ['something']); } public function testSimpleRouteWithDefaults() @@ -97,7 +97,7 @@ public function testSimpleOCSRouteWithDefaults() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', [], ['param' => 'foobar']); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], ['param' => 'foobar']); } public function testSimpleRouteWithPostfix() @@ -115,7 +115,7 @@ public function testSimpleOCSRouteWithPostfix() { ] ]; - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', [], [], '_something'); + $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], [], '_something'); } /** @@ -175,7 +175,7 @@ public function testSimpleOCSRouteWithUnderScoreNames() { ['name' => 'admin_folders#open_current', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] ]]; - $this->assertSimpleOCSRoute($routes, 'admin_folders.open_current', 'DELETE', '/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent'); + $this->assertSimpleOCSRoute($routes, 'admin_folders.open_current', 'DELETE', '/apps/app1/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent'); } public function testResource()