post("user"); $password = Input::instance()->post("password"); $user = identity::lookup_user_by_name($username); if (empty($user) || !identity::is_correct_password($user, $password)) { throw new Rest_Exception("Forbidden", 403); } $key = rest::get_access_token($user->id); rest::reply($key->access_key); } public function __call($function, $args) { $input = Input::instance(); switch ($method = strtolower($input->server("REQUEST_METHOD"))) { case "get": $request->params = (object) $input->get(); break; case "post": $request->params = (object) $input->post(); if (isset($_FILES["file"])) { $request->file = upload::save("file"); } break; } $request->method = strtolower($input->server("HTTP_X_GALLERY_REQUEST_METHOD", $method)); $request->access_token = $input->server("HTTP_X_GALLERY_REQUEST_KEY"); $request->url = url::abs_current(true); rest::set_active_user($request->access_token); $handler_class = "{$function}_rest"; $handler_method = $request->method; if (!method_exists($handler_class, $handler_method)) { throw new Rest_Exception("Bad Request", 400); } try { print rest::reply(call_user_func(array($handler_class, $handler_method), $request)); } catch (ORM_Validation_Exception $e) { foreach ($e->validation->errors() as $key => $value) { $msgs[] = "$key: $value"; } throw new Rest_Exception("Bad Request: " . join(", ", $msgs), 400); } } }