public function before(WebRequest $request) { if (!$request->getArguments()->has(WebRequest::$METHOD_KEY)) { $request->setMethod(WebRequest::METHOD_GET); } try { $this->boxes->dispatch($request, $this->router, $request->getArguments()); } catch (WrappedRedirection $r) { $request->getArguments()->set('target', $r->getTarget()); $request->setMethod('redirect'); } return parent::before($request); }
public function givenTheRequestArgument_Is($keyPath, $value) { $keys = explode('/', $keyPath); $last = array_pop($keys); $arguments = $this->request->getArguments(); foreach ($keys as $key) { if (!$arguments->has($key)) { $arguments->set($key, new Map()); } $arguments = $arguments->get($key); } $arguments->set($last, $value); }
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); }
/** * @param Parameter $parameter * @return boolean */ public function has(Parameter $parameter) { return $this->request->getArguments()->has($parameter->getName()); }
public function thenTheArgumentsShouldBeEmpty() { $this->spec->assertEmpty($this->request->getArguments()->toArray()); }