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'); }
/** * 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; }
/** * Send request * * @param String $method * @param String $endpoint * @param Array $params * @param Mixed $data * @param Array $headers * @return \Spore\HttpFoundation\Response * @throws \InvalidArgumentException, \RuntimeException */ public function call($method, $endpoint, array $params, $data = null, array $headers = array()) { $method = strtoupper($method); if (isset($this->spec['methods'][$endpoint])) { $spec = $this->spec['methods'][$endpoint]; if ($spec['method'] != $method) { throw new InvalidArgumentException(sprintf("Method %s is not allowed.", $method)); } $params = $this->verifyParameters($params, isset($spec['required_params']) ? $spec['required_params'] : array(), isset($spec['optional_params']) ? $spec['optional_params'] : array()); $uri = rtrim($this->spec['base_url'], '/') . $spec['path']; foreach ($params as $key => $value) { $uri = str_replace(':' . $key, $value, $uri); } $request = new Request(); $request->setUri($uri); $request->setMethod($method); if (!empty($data)) { $request->setData($data); } $env = new ArrayObject(array('format' => $this->format)); foreach ($this->middlewares as $middleware) { $middleware->processRequest($request, $env); } $response = $this->getAdapter()->execute($request); if (isset($spec['expected'])) { if (!in_array($response->getStatusCode(), $spec['expected'])) { throw new RuntimeException(Response::$statusTexts[$response->getStatusCode()]); } } foreach ($this->middlewares as $middleware) { $middleware->processResponse($response, $env); } return $response; } throw new InvalidArgumentException(sprintf("Endpoint %s is not defined.", $endpoint)); }