diff --git a/lib/ocs.php b/lib/ocs.php index d7a7951fab53d3f453a87569ef6387e1a0a65c5c..1df08df9fa1179251862c5586edc0eaf308b9c3c 100644 --- a/lib/ocs.php +++ b/lib/ocs.php @@ -23,6 +23,9 @@ * */ +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; + /** * Class to handle open collaboration services API requests * @@ -93,7 +96,7 @@ class OC_OCS { $format = self::readData($method, 'format', 'text', ''); $router = new OC_Router(); - $router->useCollection('ocs'); + $router->useCollection('root'); // CONFIG $router->create('config', '/config.{format}') ->defaults(array('format' => $format)) @@ -247,6 +250,8 @@ class OC_OCS { $txt='Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:'."\n"; $txt.=OC_OCS::getdebugoutput(); echo(OC_OCS::generatexml($format,'failed',999,$txt)); + } catch (MethodNotAllowedException $e) { + OC_Response::setStatus(405); } exit(); } diff --git a/lib/route.php b/lib/route.php index df3a18e844f3ec8927104c5512fee1afe1950d70..772446e56152c3056ef9472f92380f248ffe2200 100644 --- a/lib/route.php +++ b/lib/route.php @@ -50,7 +50,9 @@ class OC_Route extends Route { if (isset($requirements['_method'])) { $method = $requirements['_method']; } - $this->method($method); + if ($method) { + $this->method($method); + } return $this; } diff --git a/lib/router.php b/lib/router.php index 3ba2125465a0042eb7d3694c33bb82d53f15c11b..dbcaff4026e5181946dc763c5f7c3e7d5dbeb199 100644 --- a/lib/router.php +++ b/lib/router.php @@ -10,19 +10,21 @@ use Symfony\Component\Routing\Matcher\UrlMatcher; use Symfony\Component\Routing\RequestContext; use Symfony\Component\Routing\RouteCollection; //use Symfony\Component\Routing\Route; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; class OC_Router { protected $collections = array(); protected $collection = null; protected $root = null; + public function __construct() { + // TODO cache + $this->root = $this->getCollection('root'); + } + /** * loads the api routes */ public function loadRoutes() { - // TODO cache - $this->root = $this->getCollection('root'); foreach(OC_APP::getEnabledApps() as $app){ $file = OC_App::getAppPath($app).'/appinfo/routes.php'; if(file_exists($file)){