where("access_key", "=", $access_token) ->find(); if (!$key->loaded()) { throw new Rest_Exception("Forbidden", 403); } $user = identity::lookup_user($key->user_id); if (empty($user)) { throw new Rest_Exception("Forbidden", 403); } identity::set_active_user($user); } static function send_headers($exception) { header("HTTP/1.1 " . $exception->getCode() . " " . $exception->getMessage()); } /** * Convert a REST url into an object. * Eg: "http://example.com/gallery3/index.php/rest/gallery/Family/Wedding" -> Item_Model * * @param string the fully qualified REST url * @return mixed the corresponding object (usually a model of some kind) */ static function resolve($url) { $relative_url = substr($url, strlen(url::abs_site("rest"))); $path = parse_url($relative_url, PHP_URL_PATH); $components = explode("/", $path, 3); $class = "$components[1]_rest"; if (!method_exists($class, "resolve")) { throw new Kohana_404_Exception($url); } return call_user_func(array($class, "resolve"), !empty($components[2]) ? $components[2] : null); } /** * Return an absolute url used for REST resource location. * @param string module name (eg, "gallery", "tags") * @param string relative path (eg "Family/Weddings.jpg") * @return string complete url */ static function url($module, $path) { return url::abs_site("rest/$module/$path"); } }