public function dispatch(Pebble_Http_Request $request) { $response = new Pebble_Http_Response(); if ($methodName = $this->_getRoute($request)) { $response->setStatusCode(Pebble_Http_Response::HTTP_STATUS_200); try { ob_start(); $statusCode = $this->{$methodName}($request); $responseBody = ob_get_contents(); ob_end_clean(); $response->setBody($responseBody); if ($statusCode !== null) { $response->setStatusCode($statusCode); } } catch (Exception $e) { $this->_500($response, $e); } return $response; } else { if (file_exists(getcwd() . $request->getUrl())) { $filename = getcwd() . $request->getUrl(); if (is_file($filename)) { $file = file_get_contents($file); $response->setBody($file); $response->setStatusCode(Pebble_Http_Response::HTTP_STATUS_200); } else { $this->_404($response); } } else { if (file_exists(PEBBLE_ROOT . '/resources' . $request->getUrl())) { $filename = PEBBLE_ROOT . '/resources' . $request->getUrl(); if (!is_file($filename)) { $this->_404($response); } else { $file = file_get_contents($filename); $response->setBody($file); $response->setStatusCode(Pebble_Http_Response::HTTP_STATUS_200); } } else { $this->_404($response); } } } return $response; }