Example #1
0
 /**
  * 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));
 }
Example #2
0
 /**
  * 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();
 }