Пример #1
0
 public function testClass()
 {
     $request = new \Spore\HttpFoundation\Request();
     $this->assert->object($request)->isInstanceOf('\\Spore\\HttpFoundation\\Request');
     $request->setUri('http://*****:*****@www.google.com:8080/search?q=test');
     $this->assert->string($request->getUri())->isEqualTo('http://*****:*****@www.google.com:8080/search?q=test');
     $request->setUri('http://*****:*****@www.google.com:80/search?q=test');
     $this->assert->string($request->getUri())->isEqualTo('http://*****:*****@www.google.com/search?q=test');
     $request->setMethod('GET');
     $this->assert->exception(function () use($request) {
         $request->setMethod('FOOT');
     })->isInstanceOf('\\InvalidArgumentException');
     $this->assert->string($request->getPath())->isEqualTo('/search');
     $this->assert->string($request->getScheme())->isEqualTo('http');
     $this->assert->string($request->getHost())->isEqualTo('www.google.com');
     $this->assert->integer($request->getPort())->isEqualTo(80);
     $request->setPort(8080);
     $this->assert->integer($request->getPort())->isEqualTo(8080);
     $this->assert->string($request->getMethod())->isEqualTo('GET');
     $this->assert->boolean($request->isGet())->isTrue();
     $this->assert->boolean($request->isPost())->isFalse();
     $this->assert->boolean($request->isDelete())->isFalse();
     $this->assert->boolean($request->isPatch())->isFalse();
     $this->assert->boolean($request->isOptions())->isFalse();
     $this->assert->boolean($request->isTrace())->isFalse();
     $this->assert->boolean($request->isConnect())->isFalse();
     $this->assert->boolean($request->isPut())->isFalse();
     $this->assert->boolean($request->isHead())->isFalse();
     $this->assert->string($request->getUser())->isEqualTo('username');
     $this->assert->string($request->getPassword())->isEqualTo('passwd');
     $request->setUser('username1');
     $this->assert->string($request->getUser())->isEqualTo('username1');
     $request->setPassword('passwd2');
     $this->assert->string($request->getPassword())->isEqualTo('passwd2');
     $this->assert->boolean($request->isAuth())->isTrue();
     $request = new \Spore\HttpFoundation\Request('http://www.google.com/search?q=test');
     $request->setQuery('q=toto&hl=fr');
     $this->assert->object($request->getQuery())->isInstanceOf('\\Symfony\\Component\\HttpFoundation\\ParameterBag');
     $this->assert->array($request->getQuery()->all())->isEqualTo(array('q' => 'toto', 'hl' => 'fr'));
     $request->setQuery(array('foot' => 'bar'));
     $this->assert->array($request->getQuery()->all())->isEqualTo(array('q' => 'toto', 'hl' => 'fr', 'foot' => 'bar'));
     $this->assert->exception(function () use($request) {
         $request->setQuery(1);
     })->isInstanceOf('\\InvalidArgumentException');
     $request = new \Spore\HttpFoundation\Request();
     $this->assert->object($request->getQuery())->isInstanceOf('\\Symfony\\Component\\HttpFoundation\\ParameterBag');
     $request->setData('test');
     $this->assert->string($request->getData())->isEqualTo('test');
 }
Пример #2
0
 /**
  * Send request
  * 
  * @param String $method
  * @param String $uri
  * @param Array $params
  * @param Mixed $data
  * @param Array $headers
  * @return \Spore\HttpFoundation\Response
  */
 public function call($method, $uri, array $params, $data = null, array $headers = array())
 {
     $method = strtoupper($method);
     $parts = array();
     if (strpos($uri, '/') !== false) {
         $parts = array_filter(explode('/', $uri));
     }
     foreach ($params as $key => $value) {
         $uri = str_replace(':' . $key, $value, $uri);
     }
     if (!empty($parts)) {
         foreach ($parts as $value) {
             if ($value[0] == ':') {
                 $key = substr($value, 1);
                 if (isset($params[$key])) {
                     unset($params[$key]);
                 }
             }
         }
     }
     $request = new Request();
     $request->setUri($uri);
     $request->setMethod($method);
     if (isset($this->formats[$this->format])) {
         $request->headers->set('Accept', $this->formats[$this->format]);
     } else {
         $request->headers->set('Accept', '');
     }
     if (!empty($params)) {
         $request->setQuery($params);
     }
     if (!empty($data)) {
         $request->setData($data);
     }
     $env = new ArrayObject(array('format' => $this->format));
     $middlewares = $this->getMiddlewares();
     foreach ($middlewares as $middleware) {
         $middleware->processRequest($request, $env);
     }
     $response = $this->getAdapter()->execute($request);
     foreach ($middlewares as $middleware) {
         $middleware->processResponse($response, $env);
     }
     unset($middlewares);
     return $response;
 }