Esempio n. 1
0
 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;
 }