protected function generateRequest($url, array $subProtocols, array $headers) { $headers = array_merge($this->defaultHeaders, $headers); $headers['Sec-WebSocket-Key'] = $this->generateKey(); $request = new Request('GET', $url, $headers); $scheme = strtolower($request->getScheme()); if (!in_array($scheme, ['ws', 'wss'])) { throw new \InvalidArgumentException(sprintf('Cannot connect to invalid URL (%s)', $url)); } $request->setScheme('HTTP'); if (!$request->getPort()) { $request->setPort('wss' === $scheme ? 443 : 80); } else { $request->setHeader('Host', $request->getHeader('Host') . ":{$request->getPort()}"); } if (!$request->getHeader('Origin')) { $request->setHeader('Origin', str_replace('ws', 'http', $scheme) . '://' . $request->getHost()); } // do protocol headers if (count($subProtocols) > 0) { $protocols = implode(',', $subProtocols); if ($protocols != "") { $request->setHeader('Sec-WebSocket-Protocol', $protocols); } } return $request; }
/** * @covers Guzzle\Http\Message\Request::getScheme * @covers Guzzle\Http\Message\Request::setScheme */ public function testRequestHasScheme() { $this->assertEquals('http', $this->request->getScheme()); $this->assertEquals($this->request, $this->request->setScheme('https')); $this->assertEquals('https', $this->request->getScheme()); }
public function request($method, $url, array $headers = array()) { $guzzleRequest = new GuzzleRequest($method, $url, $headers); $connectionManager = $this->getConnectionManagerForScheme($guzzleRequest->getScheme()); return new ClientRequest($this->loop, $connectionManager, $guzzleRequest); }