/** * Run request to get homepage * * @param \Duality\Structure\Http\Request $req The HTTP request * @param \Duality\Structure\Http\Response $res The HTTP response * @param array $params The uri params */ public function doIndex(Request &$req, Response &$res, $params = array()) { // Set heading $this->view->addHeading('Welcome to Duality!'); // Set response $res->setContent($this->view->save()); }
/** * Default application action * * @param \Duality\Structure\Http\Request $req Give the current request * @param \Duality\Structure\Http\Response $res Give the current response * @param array $params Give the URI params * * @return void */ public function doIndex(Request &$req, Response &$res, $params = array()) { $html = <<<EOF <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Duality default controller - Replace me!</title> </head> <body><h1>Duality default controller - Replace me!</h1></body> </html> EOF; $res->setContent($html); $res->setStatus(404); }
/** * Parse the response string * * @param string $result The response string * * @return \Duality\Structure\Http\Response The response instance */ protected function parseResult($result) { list($header, $body) = @explode("\r\n\r\n", $result, 2); $response = new Response(); $response->setContent($body); foreach (explode("\r\n", $header) as $i => $line) { if ($i === 0) { $parts = explode(' ', $line); $response->setStatus($parts[1]); unset($parts); } else { list($key, $value) = explode(': ', $line); $response->addHeader($key, $value); } } return $response; }
/** * Sets an HTTP cookie * * @param \Duality\Structure\Http\Response $response The response to be sent * * @throws \Duality\Core\DualityException When finds an invalid cookie * * @return \Duality\Service\Server This instance */ public function sendCookies(Response $response) { $required = array('name', 'value', 'expire', 'path', 'domain', 'secure'); foreach ($response->getCookies() as $item) { // Validate cookie $hasKeys = array_intersect_key(array_flip($required), $item); if (count($hasKeys) !== count($required)) { throw new DualityException("Error HTTP Cookie: required keys: " . "name, value, expire, path, domain and secure", DualityException::E_HTTP_INVALIDCOOKIE); } // send cookie setcookie($item['name'], $item['value'], $item['expire'], $item['path'], $item['domain'], $item['secure']); } return $this; }