resource_type == null) { throw new Exception("@todo ERROR_MISSING_RESOURCE_TYPE"); } // @todo this needs security checks $resource = ORM::factory($this->resource_type)->where("id", $id)->find(); if (!$resource->loaded) { return Kohana::show_404(); } /** * We're expecting to run in an environment that only supports GET/POST, so expect to tunnel * PUT/DELETE through POST. */ if (request::method() == "get") { $this->_get($resource); if (Session::instance()->get("use_profiler", false)) { $profiler = new Profiler(); print $profiler->render(); } return; } switch ($this->input->post("__action")) { case "put": return $this->_put($resource); case "delete": return $this->_delete($resource); default: return $this->_post($resource); } } /** * Perform a GET request on this resource * @param ORM $resource the instance of this resource type */ abstract public function _get($resource); /** * Perform a PUT request on this resource * @param ORM $resource the instance of this resource type */ abstract public function _put($resource); /** * Perform a POST request on this resource * @param ORM $resource the instance of this resource type */ abstract public function _post($resource); /** * Perform a DELETE request on this resource * @param ORM $resource the instance of this resource type */ abstract public function _delete($resource); }