/** * Prepare Request object to send request. * * @param RequestInterface $request The Psr Request object. * @param string $method The method type. * @param string|object $url The URL to request, may be string or Uri object. * @param mixed $data The request body data, can be an array of POST data. * @param array $headers The headers array. * * @return RequestInterface */ protected function prepareRequest(RequestInterface $request, $method, $url, $data, $headers) { $url = (string) $url; // If is GET, we merge data into URL. if (strtoupper($method) == 'GET' && is_array($data)) { $url = new Uri($url); foreach ($data as $k => $v) { $url->setVar($k, $v); } $url = (string) $url; $data = null; } // If not GET, convert data to query string. if (is_array($data)) { $data = UriHelper::buildQuery($data); } /** @var RequestInterface $request */ $request->getBody()->write((string) $data); $request = $request->withRequestTarget((string) new PsrUri($url))->withMethod($method); // Set global headers foreach ((array) $this->getOption('headers') as $key => $value) { $request = $request->withHeader($key, $value); } // Override with this method foreach ($headers as $key => $value) { $request = $request->withHeader($key, $value); } return $request; }
/** * Test the isSSL method. * * @return void * * @since 1.0 * @covers Asika\Http\Uri\Uri::isSSL */ public function testIsSSL() { $object = new Uri('https://*****:*****@www.example.com:80/path/file.html?var=value#fragment'); $this->assertThat($object->isSSL(), $this->equalTo(true)); $object = new Uri('http://*****:*****@www.example.com:80/path/file.html?var=value#fragment'); $this->assertThat($object->isSSL(), $this->equalTo(false)); }