Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
 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;
 }
Пример #4
0
 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);
 }
Пример #5
0
 /**
  * @param Parameter $parameter
  * @return boolean
  */
 public function has(Parameter $parameter)
 {
     return $this->request->getArguments()->has($parameter->getName());
 }
Пример #6
0
 public function thenTheArgumentsShouldBeEmpty()
 {
     $this->spec->assertEmpty($this->request->getArguments()->toArray());
 }