public function dispatch(WebRequest $request, Router $router) { $arguments = $request->getArguments(); $request->setTarget($this->target); if ($arguments->isEmpty()) { $arguments->merge($this->arguments); $request->setMethod(WebRequest::METHOD_GET); } else { if ($arguments->has(self::$TARGET_KEY)) { $request->setTarget(Path::fromString($arguments->get(self::$TARGET_KEY))); } if ($arguments->has(WebRequest::$METHOD_KEY)) { $request->setMethod($arguments->get(WebRequest::$METHOD_KEY)); } else { $request->setMethod(WebRequest::METHOD_GET); } } $this->response = $router->route($request)->respond(); if ($this->response->getHeaders()->has(WebResponse::HEADER_LOCATION)) { throw new WrappedRedirection($this->response->getHeaders()->get(WebResponse::HEADER_LOCATION)); } return $request; }
private function wrapMappedTarget(WebRequest $request) { $prefixedBox = Wrapper::$PREFIX . $this->mappedBox; $request->getArguments()->set(Box::$PRIMARY_TARGET_KEY, $this->mappedBox); $arguments = new Map(); if ($request->getArguments()->has($prefixedBox)) { $arguments = $request->getArguments()->get($prefixedBox); } $target = $request->getTarget()->toString(); $request->setTarget(new Path()); if ($target) { $arguments->set(Box::$TARGET_KEY, $target); } foreach ($request->getArguments() as $key => $value) { if (substr($key, 0, strlen(Wrapper::$PREFIX)) != Wrapper::$PREFIX) { $arguments->set($key, $value); $request->getArguments()->remove($key); } } $request->getArguments()->set($prefixedBox, $arguments); }
public function givenTheRequestTarget_Is($string) { $this->request->setTarget(Path::fromString($string)); }