diff --git a/lib/api.php b/lib/api.php index 767f1d30b7..eaa2bb42f8 100644 --- a/lib/api.php +++ b/lib/api.php @@ -1,91 +1,91 @@ . - * - */ - - class OC_API { - - /** - * api actions - */ - protected $actions = array(); - - /** - * registers an api call - * @param string $method the http method - * @param string $url the url to match - * @param callable $action the function to run - */ - public function register($method, $url, $action){ - $name = strtolower($method).$url; - if(!isset(self::$actions[$name])){ - OC_Router::create($name, $url) - ->action('OC_API', 'call'); - self::$actions[$name] = array(); - } - self::$actions[$name][] = $action; - } - - /** - * handles an api call - * @param array $parameters - */ - public function call($parameters){ - // TODO load the routes.php from apps - $name = $parameters['_name']; - $response = array(); - // Loop through registered actions - foreach(self::$actions[$name] as $action){ - if(is_callable($action)){ - $action_response = call_user_func($action, $parameters); - if(is_array($action_response)){ - // Merge with previous - $response = array_merge($response, $action_response); - } else { - // TODO - Something failed, do we return an error code, depends on other action responses - } - } else { - // Action not callable - // log - // TODO - Depending on other action responses, do we return a 501? - } - } - // Send the response - if(isset($parameters['_format'])){ - self::respond($response, $parameters['_format']); - } else { - self::respond($response); - } - } - - /** - * respond to a call - * @param int|array $response the response - * @param string $format the format xml|json - */ - private function respond($response, $format='json'){ - // TODO respond in the correct format - } - - } \ No newline at end of file +* ownCloud +* +* @author Tom Needham +* @author Michael Gapczynski +* @author Bart Visscher +* @copyright 2012 Tom Needham tom@owncloud.com +* @copyright 2012 Michael Gapczynski mtgap@owncloud.com +* @copyright 2012 Bart Visscher bartv@thisnet.nl +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see . +* +*/ + +class OC_API { + + /** + * api actions + */ + protected $actions = array(); + + /** + * registers an api call + * @param string $method the http method + * @param string $url the url to match + * @param callable $action the function to run + */ + public function register($method, $url, $action){ + $name = strtolower($method).$url; + if(!isset(self::$actions[$name])){ + OC_Router::create($name, $url) + ->action('OC_API', 'call'); + self::$actions[$name] = array(); + } + self::$actions[$name][] = $action; + } + + /** + * handles an api call + * @param array $parameters + */ + public function call($parameters){ + + $name = $parameters['_name']; + $response = array(); + // Loop through registered actions + foreach(self::$actions[$name] as $action){ + if(is_callable($action)){ + $action_response = call_user_func($action, $parameters); + if(is_array($action_response)){ + // Merge with previous + $response = array_merge($response, $action_response); + } else { + // TODO - Something failed, do we return an error code, depends on other action responses + } + } else { + // Action not callable + // log + // TODO - Depending on other action responses, do we return a 501? + } + } + // Send the response + if(isset($parameters['_format'])){ + self::respond($response, $parameters['_format']); + } else { + self::respond($response); + } + } + + /** + * respond to a call + * @param int|array $response the response + * @param string $format the format xml|json + */ + private function respond($response, $format='json'){ + // TODO respond in the correct format + } + + } \ No newline at end of file