Example #1
0
File: rest.php Project: Jamp/sgas
 /**
  * Define el inicio de un servicio REST
  *
  * @param Controller $controller controlador que se convertira en un servicio REST
  */
 public static function init(Controller $controller)
 {
     $content = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : 'text/html';
     /**
      * Verifico el formato de entrada
      */
     self::$_iFormat = str_replace(array('text/', 'application/'), '', $content);
     /* Compruebo el método de petición */
     self::$_method = strtolower($_SERVER['REQUEST_METHOD']);
     $format = explode(',', $_SERVER['HTTP_ACCEPT']);
     while (self::$_oFormat = array_shift($format)) {
         self::$_oFormat = str_replace(array('text/', 'application/'), '', self::$_oFormat);
         if (in_array(self::$_oFormat, self::$_outputFormat)) {
             break;
         }
     }
     /**
      * Si no lo encuentro, revuelvo un error
      */
     if (self::$_oFormat == null) {
         return 'error';
     } else {
         View::response(self::$_oFormat);
         View::select('response');
     }
     /**
      * Si la acción del controlador es un numero lo pasamos a los parametros
      */
     if (is_numeric($controller->action_name)) {
         $controller->parameters = array($controller->action_name) + Rest::param();
     } else {
         $controller->parameters = Rest::param();
     }
     /**
      * reescribimos la acción a ejecutar, ahora tendra será el metodo de
      * la peticion: get , put, post, delete, etc.
      */
     $controller->action_name = self::$_method;
     $controller->limit_params = FALSE;
     //no hay verificación en el numero de parametros.
     $controller->data = array();
     //variable por defecto para las vistas.
 }