function testSetStatus() { $response = new Response(); $response->setStatus('402 Where\'s my money?'); $this->assertEquals(402, $response->getStatus()); $this->assertEquals('Where\'s my money?', $response->getStatusText()); }
public function serve($app) { if (!is_callable($app)) { throw new InvalidArgumentException('not a valid app'); } $this->log('Serving ' . (is_object($app) ? get_class($app) : $app) . ' app…'); try { $this->log("got request"); $context = array('env' => $_SERVER, 'stdin' => fopen("php://input", "r"), 'logger' => function ($message) { trigger_error($message, E_USER_NOTICE); }, '_GET' => $_GET, '_POST' => $_POST, '_FILES' => $_FILES, '_COOKIE' => new Cookies()); $result = call_user_func($app, $context); $response = new Response(); $response->setStatus($result[0]); for ($i = 0, $cnt = count($result[1]); $i < $cnt; $i++) { $response->addHeader($result[1][$i], $result[1][++$i]); } unset($response); echo $result[2]; unset($result); $this->log("-> done with request"); } catch (\Exception $e) { $this->log('[Exception] ' . get_class($e) . ': ' . $e->getMessage()); } }
function saveuser() { $response = new Response(); try { $id = $this->input->post("user-id"); $email = $this->input->post("email"); $firstName = $this->input->post("first-name"); $lastName = $this->input->post("last-name"); $role = $this->input->post("role"); $subDivision = $this->input->post("sub-division"); $user = new User(); if ($id != null && $id != "") { $user = $this->findById("User", $id); } $user->setEmail($email); $user->setUsername($email); $user->setPassword(""); $user->setFirstName($firstName); $user->setLastName($lastName); $subDivision = $this->findById("Subdivision", $subDivision); $user->setSubdivision($subDivision); $role = $this->getRoleByName($role); $user->setRole($role[0]); $token = $this->getRandomCode(); $user->setToken($token); $this->save($user); $emailMessage = "Hi " . $user->getName() . ", <br/> Your account has been activate on " . base_url() . ". Please <a href='" . site_url() . "/validate/" . $token . "'>click here </a> to create you password."; $this->sendMail($user->getEmail(), "Active you account.", $emailMessage); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
public static function jsonDeserialize($content) { $data = json_decode($content); $keys = array_keys(json_decode($content, true)); $response = new Response(); foreach ($keys as $key) { switch ($key) { case 'status': $response->setStatus($data->status); break; case 'data': $response->setData($data->data); break; case 'error': $response->setErrorMessage($data->error); break; case 'code': $response->setErrorCode($data->code); break; case 'metadata': foreach ((array) $data->metadata as $key => $value) { $response->setMetadata($key, $value); } break; } } return $response; }
function sendForBilling() { $response = new Response(); try { $projectId = $this->input->post("project-id"); $amount = $this->input->post("project-bill-amount"); $billDoc = $this->input->post("bill-doc"); $project = $this->findById("Project", $projectId); if ($project == null) { throw new RuntimeException("Invalid Project..!"); } $project->setStatus(Project::PROJECT_BILL); $project->getWorkOrder()->setStatus(Workorder::STATUS_COMPLETED); $project->getWorkOrder()->setApprovedBy($this->getLoggedInUser()); $bill = new Bill(); $bill->setAmount($amount); $bill->setProject($project); $bill->setCreated(new DateTime()); $bill->setStatus(Bill::STATUS_PENDING); if ($billDoc != null && $billDoc != "") { foreach ($billDoc as $file) { $doc = new Document(); $doc->setName($file); $doc->setCreated(new DateTime()); $bill->getBillDoc()->add($doc); } } $this->save($bill); $response->setData(Project::PROJECT_BILL); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
/** * @param string $message Message. * @param int $code Error code. * @param mixed $customMessages Additional information about error. * * @todo определиться с $customMessages: это mixed или array? */ public function __construct($message, $code = self::ERR_CRITICAL, $customMessages = null) { $this->response = E()->getResponse(); if (isset($customMessages)) { if (!is_array($customMessages)) { $this->customMessages = array($customMessages); } else { $this->customMessages = $customMessages; } } if ($code == self::ERR_LANG) { $this->response->setStatus(503); $this->response->setHeader('Retry-After', 20); $message = translate($message, E()->getLanguage()->getDefault()); } elseif ($code == self::ERR_403) { $this->response->setStatus(403); $message = translate($message, E()->getLanguage()->getCurrent()); } elseif ($code == self::ERR_404) { $this->response->setStatus(404); $message = translate($message, E()->getLanguage()->getCurrent()); } elseif ($code != self::ERR_DB) { $message = translate($message, E()->getLanguage()->getCurrent()); } $this->backtrace = debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT, 5); parent::__construct($message, $code); }
function approve() { $response = new Response(); try { $projectId = $this->input->post("project-id"); $amount = floatval($this->input->post("project-bill-amount")); $project = $this->findById("Project", $projectId); if ($projectId == null) { throw new RuntimeException("Invalid Request"); } $availableAmount = $this->getAvailableFundAmountByScheme($project->getScheme()->getId()); if ($amount > floatval($availableAmount)) { throw new RuntimeException("Insufficient Funds !"); } $utilisedAmt = 0; foreach ($this->getAvailableFunds($project->getScheme()) as $fund) { /*if($fund->getAmount() == $fund->getUsedAmount()){ continue; }*/ $reqAmt = $amount - $utilisedAmt; $fundDetails = new FundDetails(); $fundDetails->setCreated(new DateTime()); $availableAmount = $fund->getAmount() - $fund->getUsedAmount(); if ($availableAmount >= $reqAmt) { $fundDetails->setAmount($reqAmt); $fund->setUsedAmount($fund->getUsedAmount() + $reqAmt); $utilisedAmt = $amount; } else { if ($reqAmt <= $availableAmount) { $fund->setUsedAmount($fund->getUsedAmount() + $reqAmt); $fundDetails->setAmount($reqAmt); $utilisedAmt = $utilisedAmt + $reqAmt; } else { $fund->setUsedAmount($fund->getUsedAmount() + $availableAmount); $fundDetails->setAmount($availableAmount); $utilisedAmt = $utilisedAmt + $availableAmount; } } $fundDetails->setFund($fund); $fundDetails->setProject($project); $project->getFundDetails()->add($fundDetails); if ($utilisedAmt == $amount) { break; } } $bill = $project->getBill(); $bill->setApprovedBy($this->getLoggedInUser()); $bill->setApprovedAmount($amount); $bill->setStatus(Bill::STATUS_APPROVED); $project->setStatus(Project::PROJECT_COMPLETED); $this->save($project); $response->setData(Bill::STATUS_APPROVED); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
/** * Sets the response body and status code header * * @param mixed $data * @param integer $status * @return void */ protected function respond($data, $status = null) { if ($this->performedRespond) { throw new DoubleRespond(); } $this->response->setStatus(!empty($status) ? $status : $this->status); $this->response->setBody($data); $this->performedRespond = true; }
public function writeResponse($response_data) { $response = new Response($this); $response->setStatus($response_data[0]); for ($i = 0, $cnt = count($response_data[1]); $i < $cnt; $i++) { $response->addHeader($response_data[1][$i], $response_data[1][++$i]); } $response->sendHeaders(); $this->write($response_data[2]); // body }
/** * Returns a list of users. * @return void */ public function actionGet() { $response = new Response(); $users = User::model()->findAll(); $data = array(); foreach ($users as $user) { $data[] = $user->getResponseData(); } $response->setStatus(Response::STATUS_OK); $response->setData('list', $data); $response->setData('total', count($users)); echo $response; }
public function writeResponse($response_data) { $response = new Response($this); $response->setStatus($response_data[0]); for ($i = 0, $cnt = count($response_data[1]); $i < $cnt; $i++) { $response->addHeader($response_data[1][$i], $response_data[1][++$i]); } $response->sendHeaders(); if (!is_resource($response_data[2])) { $this->write($response_data[2]); } else { while (!feof($response_data[2])) { $this->write(fread($response_data[2], 1024)); } } }
private function doExecute($curlHandle, Request $request) { curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10); curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true); curl_setopt($curlHandle, CURLOPT_HEADER, true); curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Accept: ' . $request->getHttpAccept())); $res = curl_exec($curlHandle); $info = curl_getinfo($curlHandle); $response = new Response(); $response->setStatus($info['http_code']); if (false !== $res) { $response->setHeaders(substr($res, 0, $info['header_size'])); $response->setBody(substr($res, -$info['download_content_length'])); } return $response; }
public function testMarshalling() { $response = new Response(); $response->setStatus(array('Code' => 'OurStatusCode', 'SubCode' => 'OurSubStatusCode', 'Message' => 'OurMessageText')); $responseElement = $response->toUnsignedXML(); $statusElements = Utils::xpQuery($responseElement, './saml_protocol:Status'); $this->assertCount(1, $statusElements); $statusCodeElements = Utils::xpQuery($statusElements[0], './saml_protocol:StatusCode'); $this->assertCount(1, $statusCodeElements); $this->assertEquals('OurStatusCode', $statusCodeElements[0]->getAttribute("Value")); $nestedStatusCodeElements = Utils::xpQuery($statusCodeElements[0], './saml_protocol:StatusCode'); $this->assertCount(1, $nestedStatusCodeElements); $this->assertEquals('OurSubStatusCode', $nestedStatusCodeElements[0]->getAttribute("Value")); $statusMessageElements = Utils::xpQuery($statusElements[0], './saml_protocol:StatusMessage'); $this->assertCount(1, $statusMessageElements); $this->assertEquals('OurMessageText', $statusMessageElements[0]->textContent); }
/** * Dispatch the given request by finding and invoking the handler matching the request data. * * @param Request $request * @param Response $response * @return Response */ public function dispatch(Request $request, Response $response) { $matches = $this->match($request->getPath(), $request->getMethod()); if ($matches === null) { throw new \Exception('No routes match the path ' . $request->getPath() . ''); } if (!is_callable($matches['handler'])) { throw new \Exception('The given handler is not a valid callback.'); } $result = call_user_func_array($matches['handler'], array_merge(array($this->application), $matches['params'])); if (is_string($result)) { $response->setContent($result); } elseif (is_numeric($result)) { $response->setStatus($result); } return $response; }
public function deleteAction() { $params = Request::getParams(); $validator = new Validator(); $params = $validator->sanitize($params); $validator->validation_rules(array("id" => "required|numeric|checkIfRecordIdExists")); $validated_data = $validator->run($params); if ($validated_data === false) { Response::setStatus(404); $returnArray = array("error" => "Invalid data was sent", "messages" => $validator->get_readable_errors()); } else { $model = new Model_Record(); $model->delete($params['id']); Response::setStatus(204); $returnArray = array(); } return $returnArray; }
function load($id) { $response = new Response(); try { $workOrder = $this->findById("Workorder", $id); $comments = array(); foreach ($workOrder->getComments() as $cmt) { $dto = new Commentdto(); $dto->setId($cmt->getId()); $dto->setComment($cmt->getComment()); $dto->setCreated(date_format($cmt->getCreated(), "d-M-Y")); $dto->setCommentedBy($cmt->getCommentedBy()->getFirstName() . " " . $cmt->getCommentedBy()->getLastName()); array_push($comments, $dto); } $response->setData($comments); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
function getFundDetails($id = null) { $response = new Response(); try { if ($id == null) { throw new RuntimeException("Invalid Request..!"); } $funds = parent::getFundDetails($id); $fundArray = array(); foreach ($funds as $fund) { $dto = new FundDetailsDto(); $dto->setAmount($fund->getAmount()); $dto->setProjectName($fund->getProject()->getName()); $dto->setFundAmount($fund->getFund()->getAmount()); array_push($fundArray, $dto); } $response->setData($fundArray); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
function addContractor() { $response = new Response(); try { $userId = $this->input->post("user-id"); $firstName = $this->input->post("first-name"); $lastName = $this->input->post("last-name"); $email = $this->input->post("email"); $phone = $this->input->post("phone"); $contractor = new Contractor(); if ($userId != null && $userId != "") { $contractor = $this->findById("Contractor", $userId); } $contractor->setFirstName($firstName); $contractor->setLastName($lastName); $contractor->setEmail($email); $contractor->setPhone($phone); $this->save($contractor); } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
public function validate() { $response = new Response(); try { $username = trim($this->input->post('username')); $password = trim($this->input->post('password')); if ($username != null && $username != "" && $password != null && $password != "") { $query = $this->doctrine->em->createQuery('SELECT u FROM User u WHERE u.email = :username and u.password = :password'); $query->setParameter('username', $username); $query->setParameter('password', $password); $users = $query->getResult(); if ($users != null) { $loggedInUser = $users[0]; $this->session->set_userdata('logged_in', $loggedInUser->getId()); $subDivsionId = -1; if ($loggedInUser->getSubdivision() != null) { $subDivsionId = $loggedInUser->getSubdivision()->getId(); } $this->session->set_userdata('sub_division_id', $subDivsionId); $functions = array(); foreach ($loggedInUser->getRole()->getRoleFunction() as $fn) { array_push($functions, $fn->getName()); } $this->session->set_userdata('functions', $functions); } else { throw new RuntimeException("Invalid Username/Password"); } } else { throw new RuntimeException("Invalid Username/Password"); } } catch (Exception $e) { $response->setStatus(false); $response->setErrorMessage($e->getMessage()); } $this->output->set_content_type('application/json')->set_output(json_encode($response)); }
private function simpleErrorResponse($message) { $response = new Response(); $response->setStatus(500, 'Internal Server Error')->setData(['result' => ['success' => false, 'error' => $message]]); return $response; }
/** * Test adding in-response-to to a status message. */ public function testResponseTo() { $response = new Response(); $response->setIssueInstant(1453323439); $response->setStatus(array('Code' => 'OurStatusCode')); $response->setInResponseTo('aabb12234'); $responseElement = $response->toUnsignedXML(); $expectedStructureDocument = new \DOMDocument(); $expectedStructureDocument->loadXML(<<<STATUSXML <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="123" Version="2.0" IssueInstant="2016-01-20T20:57:19Z" InResponseTo="aabb12234"> <samlp:Status> <samlp:StatusCode Value="OurStatusCode"/> </samlp:Status> </samlp:Response> STATUSXML ); $expectedStructure = $expectedStructureDocument->documentElement; $this->assertEqualXMLStructure($expectedStructure, $responseElement); }
private function sendPreAppOptionsResponse(Request $request, Response $response) { $response->setStatus(HTTP_STATUS["OK"]); $response->setHeader("Allow", implode(",", $this->options->allowedMethods)); $response->end(null); }
public function __invoke(Request $request, Response $response, ...$args) { if ($request->getMethod() !== "GET") { $response->setStatus(HTTP_STATUS["METHOD_NOT_ALLOWED"]); $response->setHeader("Allow", "GET"); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } if ($request->getProtocolVersion() !== "1.1") { $response->setStatus(HTTP_STATUS["HTTP_VERSION_NOT_SUPPORTED"]); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } $body = $request->getBody(); if (!$body instanceof NullBody) { $response->setStatus(HTTP_STATUS["BAD_REQUEST"]); $response->setReason("Bad Request: Entity body disallowed for websocket endpoint"); $response->setHeader("Connection", "close"); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } $hasUpgradeWebsocket = false; foreach ($request->getHeaderArray("Upgrade") as $value) { if (strcasecmp($value, "websocket") === 0) { $hasUpgradeWebsocket = true; break; } } if (empty($hasUpgradeWebsocket)) { $response->setStatus(HTTP_STATUS["UPGRADE_REQUIRED"]); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } $hasConnectionUpgrade = false; foreach ($request->getHeaderArray("Connection") as $value) { $values = array_map("trim", explode(",", $value)); foreach ($values as $token) { if (strcasecmp($token, "Upgrade") === 0) { $hasConnectionUpgrade = true; break; } } } if (empty($hasConnectionUpgrade)) { $response->setStatus(HTTP_STATUS["UPGRADE_REQUIRED"]); $response->setReason("Bad Request: \"Connection: Upgrade\" header required"); $response->setHeader("Upgrade", "websocket"); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } if (!($acceptKey = $request->getHeader("Sec-Websocket-Key"))) { $response->setStatus(HTTP_STATUS["BAD_REQUEST"]); $response->setReason("Bad Request: \"Sec-Websocket-Key\" header required"); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } if (!in_array("13", $request->getHeaderArray("Sec-Websocket-Version"))) { $response->setStatus(HTTP_STATUS["BAD_REQUEST"]); $response->setReason("Bad Request: Requested Websocket version unavailable"); $response->setHeader("Sec-WebSocket-Version", "13"); $response->setHeader("Aerys-Generic-Response", "enable"); $response->end(); return; } $handshaker = new Handshake($response, $acceptKey); $onHandshakeResult = $this->application->onHandshake($request, $handshaker, ...$args); if ($onHandshakeResult instanceof \Generator) { $onHandshakeResult = (yield from $onHandshakeResult); } $request->setLocalVar("aerys.websocket", $onHandshakeResult); $handshaker->end(); }
public static function run() { $dotenv = new \Dotenv\Dotenv(TXTROOT); $dotenv->load(); if (isset($_SERVER['HTTP_USER_AGENT']) && stripos($_SERVER['HTTP_USER_AGENT'], 'Slackbot-LinkExpanding') !== false) { Response::sendResponse(Response::HTTP_403, ['error' => "No slackbots allowed"]); exit; } if (!getenv('REDIS_URL')) { Response::sendResponse(Response::HTTP_500, ['error' => "REDIS_URL environment variable required"]); exit; } if (!Request::isGet() && !Request::isPost()) { Response::sendResponse(Response::HTTP_405, ['error' => "Please use a GET or POST"]); exit; } if (getenv('AUTH') && (!isset($_POST['auth']) || !static::compareStrings(getenv('AUTH'), $_POST['auth']))) { Response::sendResponse(Response::HTTP_401, ['error' => "'auth' parameter is missing or invalid"]); exit; } // header('Access-Control-Allow-Origin: ' . $_SERVER['ORIGIN']); // header('Access-Control-Allow-Credentials: true'); // Access-Control-Allow-Methods: GET, POST // x-frame-options $redis = Redis::getRedis(getenv('REDIS_URL')); $hash = ltrim(Request::getPath(), '/'); if ($hash) { if ($hash == 'robots.txt') { Response::setStatus(Response::HTTP_200); Response::setContentType(Response::TEXT); Response::setContent("User-agent: *\nDisallow: /"); Response::send(); exit; } if (Request::isPost()) { Response::sendResponse(Response::HTTP_405, ['error' => "Cannot post to a hash"]); exit; } if (strlen($hash) > Redis::MAX_KEY_LENGTH || !preg_match('/^[A-Za-z0-9]+$/', $hash)) { Response::sendResponse(Response::HTTP_404, ['error' => "Invalid hash"]); exit; } $data = $redis->hGetAll(Redis::PREFIX . $hash); if (!$data) { Response::sendResponse(Response::HTTP_404, ['error' => "Hash not found"]); exit; } $datum = Datum::createFromArray($data); if ($datum->once) { $redis->del(Redis::PREFIX . $hash); } // set proper cache header, esp for read-once // actually, PROBABLY NOT A GOOD IDEA, esp for things that are meant to expire. we should do the opposite - dont cache // Response::setCacheForeverHeaders(); Response::sendResponse('datum', ['datum' => $datum]); exit; } if (Request::isGet()) { Response::sendResponse('home', ['domain' => 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost()]); exit; } else { $data = isset($_POST['data']) ? $_POST['data'] : file_get_contents("php://input"); if (!$data) { Response::sendResponse(Response::HTTP_400, ['error' => 'No data submitted']); exit; } $datum = new Datum(trim($data), Datum::T_TEXT, Request::isFlagOn('once')); $key = substr(static::randId(), 0, Redis::MAX_KEY_LENGTH); $ttl = isset($_POST['ttl']) ? max(1, min((int) $_POST['ttl'], Redis::MAX_TTL)) : Redis::MAX_TTL; $redis->hMSet(Redis::PREFIX . $key, $datum->toArray()); $redis->expire(Redis::PREFIX . $key, $ttl); $url = 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost() . '/' . $key; Response::sendResponse(Response::HTTP_201, ['url' => $url, 'ttl' => $ttl, '_textKey' => 'url']); exit; } }
function redirect($to, $status = 301) { if ($this->request->getParams()) { // Attempting to fill the blanks. $params = $this->request->getParams(); $to = preg_replace_callback('%\\$(\\d+)%', function ($matches) use($params) { $index = $matches[1] - 1; if (array_key_exists($index, $params)) { return $params[$index]; } else { return ''; } }, $to); } $response = new Response(); $response->redirect($to); $response->setStatus($status); return $response; }
/** * 处理异常 * * @param Exception $e */ public static function handleException(\Exception $e) { restore_error_handler(); restore_exception_handler(); // clean buffer if (!headers_sent()) { ob_get_level() and ob_clean(); } $response = new Response(); try { $status = $e instanceof \Lime\Exception\NotFoundException ? 404 : 500; $response->setStatus($status); $response->setBody($status == 404 ? static::notFound($e) : static::error($e)); $response->respond(); } catch (\Exception $e) { /* 异常处理中出错的最后处理 */ ob_get_level() and ob_clean(); header('Content-Type: text/plain; charset=UTF-8', true, 500); echo static::text($e); } exit(1); }
private function _perform($status, $text) { $this->response->setStatus($status); $this->response->setContent($text); }
protected function get_cover() { $userId = $this->ampacheUser->getUserId(); $albumId = $this->params('filter'); try { $album = $this->albumMapper->find($albumId, $userId); } catch (DoesNotExistException $e) { $r = new Response(); $r->setStatus(Http::STATUS_NOT_FOUND); return $r; } $files = $this->rootFolder->getById($album->getCoverFileId()); if (count($files) === 1) { return new FileResponse($files[0]); } else { $r = new Response(); $r->setStatus(Http::STATUS_NOT_FOUND); return $r; } }
/** * @param Response $response * @param Response $services * @return Response */ private function appendToResponse(Response $response, Response $services) { foreach ($services as $service) { $response->append($service); } $response->setStatus($services->getStatus()); return $response; }
public function run() { $response = null; list($route_mask, $service_name) = $this->findServiceRoute(); if (null !== $route_mask) { $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); if ($this->application->passport->is_auth()) { $response->setHeader('User access token: ' . $this->application->passport->getSessionToken()); } $response->output($service_name, $route_mask); $this->stop(); } } // Статичная страница /** @var \Service\Pages\Model_Factory $pages_factory */ $pages_factory = $this->service_factory->factoryPages; if (null !== $pages_factory) { $url = $this->request->url->toString(false); $page = $pages_factory->pages->getBySlug($url); if (null !== $page) { $service_name = 'Pages'; $route_mask = new \Service\Pages\Router_Client_Page(); $route_mask->found_variables[\Service\Pages\Model_Pages_Page::FIELD_SLUG] = $url; $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output($service_name, $route_mask); $this->stop(); } } } // Есть стандартная страница ошибки $this->request->url->path = '/404.html'; list($route_mask, $service_name) = $this->findServiceRoute(); if (null !== $route_mask) { $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->setStatus(Response::HTTP_404_Not_Found); $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output(); $this->stop(); } } // Нет стандартной страницы ошибки $response = new Response(); $response->setStatus(Response::HTTP_404_Not_Found); $response->setBody('Nothing found'); $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output(); $this->stop(); }