Beispiel #1
0
 /**
  * @param Request $request
  *
  * @throws \LogicException
  * @throws Http\Exception\NotFoundException
  * @return Response
  */
 public function route(Request $request = null)
 {
     if (null === $request) {
         $request = Request::createFromGlobals();
     }
     $this->request = $request;
     $this->request_uri = $request->getPath();
     if (strrpos($this->request_uri, $request->getFormat()) !== false) {
         $this->request_uri = substr($this->request_uri, 0, -(strlen($request->getFormat()) + 1));
     }
     $this->request_method = $request->getMethod();
     Hook::triggerAction('router.before_routing', array(&$this));
     $url = $this->request_method . $this->request_uri;
     $node = $this->getRootNode()->findChild($url, $this->request);
     /** @var \Wave\Router\Action $action */
     if ($node instanceof Router\Node && ($action = $node->getAction())) {
         Hook::triggerAction('router.before_invoke', array(&$action, &$this));
         $this->request->setAction($action);
         $this->response = Controller::invoke($action, $this->request);
         Hook::triggerAction('router.before_response', array(&$action, &$this));
         if (!$this->response instanceof Response) {
             throw new \LogicException("Action {$action->getAction()} should return a \\Wave\\Http\\Response object", 500);
         } else {
             return $this->response->prepare($this->request);
         }
     } else {
         throw new NotFoundException('The requested URL ' . $url . ' does not exist', $this->request);
     }
 }
Beispiel #2
0
 public function prepare(Request $request)
 {
     parent::prepare($request);
     $this->headers->set('Content-Type', 'text/html; charset=utf8');
     $this->headers->set('X-Wave-Response', 'html');
     return $this;
 }
Beispiel #3
0
 public function prepare(Request $request)
 {
     parent::prepare($request);
     $this->headers->set('Cache-Control', 'no-cache, must-revalidate');
     $this->headers->set('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
     $this->headers->set('Content-Type', 'text/xml; charset=utf-8');
     $this->headers->set('X-Wave-Response', 'xml');
     return $this;
 }
Beispiel #4
0
 public function prepare(Request $request)
 {
     parent::prepare($request);
     if ($request->query->has('jsonp_callback')) {
         $this->jsonp_callback = $request->query->get('jsonp_callback');
     }
     if (!$this->headers->has('Content-Type')) {
         $content_types = array_map('trim', explode(',', $request->headers->get('accept', static::$default_type, true)));
         $allowed = array_intersect($content_types, static::$acceptable_types);
         $content_type = empty($allowed) ? static::$default_type : array_shift($allowed);
         $this->headers->set('Content-Type', $content_type);
     }
     $this->headers->set('Cache-Control', 'no-cache, must-revalidate');
     $this->headers->set('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
     $this->headers->set('X-Wave-Response', 'json');
     return $this;
 }