/** * Render a response that has no content (merely headers). The options * argument is interpreted to be a hash of header names and values. * This allows you to easily return a response that consists only of * significant headers: * * head('created', array('location' => 'http://foo')) * head(array('status' => 'created', 'location' => 'http://foo')) * * @param integer|string|array $first Status code or options array * @param array $second Options array * @return void */ protected function head($first, $second = array()) { if (is_array($first)) { $options = $first; if (isset($options['status'])) { $status = $options['status']; unset($options['status']); } else { $status = 'ok'; } } else { $status = $first; $options = $second; } $status = $this->interpretStatus($status); foreach ($options as $key => $value) { $dashed = Mad_Support_Inflector::dasherize($key); $spaced = str_replace('-', ' ', $dashed); $spaced = ucwords($spaced); $dashed = str_replace(' ', '-', $spaced); $this->_response->setHeader("{$dashed}: {$value}", $replace = true); } $this->_response->setStatus($status); $this->render(array('nothing' => true)); }
/** * Dispatch the request to the correct controller * * @param null|Mad_Controller_Request_Http $request * @param null|Mad_Controller_Response_Http $response * @return void */ public function dispatch($request = null, $response = null) { $t = new Horde_Support_Timer(); $t->push(); if ($response === null) { $response = new Mad_Controller_Response_Http(); } if ($request === null) { $request = new Mad_Controller_Request_Http(); } // request could not be parsed if ($request->isMalformed()) { $body = "Your request could not be understood by the server, " . "probably due to malformed syntax.\n\n"; $exc = $request->getException(); if ($exc && MAD_ENV != 'production') { $body .= $exc->getMessage(); } $response->setStatus(400); $response->setBody($body); // dispatch request to controller } else { $controller = $this->recognize($request); $response = $controller->process($request, $response); } $time = $t->pop(); $this->_logRequest($request, $time); $response->send(); }