private function sendHandshakeResponse() { try { $challengeHeader = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key', null); if (!$challengeHeader) { throw new Exception("No Sec-WebSocket-Key received!"); } // Check for newer handshake $challenge = $challengeHeader->getFieldValue(); // Build response $response = new Response(); $response->setStatusCode(101); $response->setReasonPhrase("WebSocket Protocol Handshake"); $headers = new Headers(); $response->setHeaders($headers); $headers->addHeaderLine("Upgrade", "WebSocket"); $headers->addHeaderLine("Connection", "Upgrade"); $headers->addHeaderLine("Sec-WebSocket-Accept", self::calcHybiResponse($challenge)); $this->setResponse($response); $handshakeRequest = new Handshake($this->getHandshakeRequest(), $this->getHandshakeResponse()); $this->emit("handshake", array($handshakeRequest)); if ($handshakeRequest->isAborted()) { $this->close(); } else { $this->_socket->write($response->toString()); $this->logger->debug("Got an HYBI style request, sent HYBY handshake response"); $this->connected = true; $this->emit("connect"); } } catch (Exception $e) { $this->logger->err("Connection error, message: " . $e->getMessage()); $this->close(); } }
public function testRequestCanSetHeaders() { $response = new Response(); $headers = new \Zend\Http\Headers(); $ret = $response->setHeaders($headers); $this->assertInstanceOf('Zend\\Http\\Response', $ret); $this->assertSame($headers, $response->getHeaders()); }
public function setUp() { $response = new Response(); $response->setHeaders(new Headers()); $mvcEvent = new MvcEvent(); $mvcEvent->setResponse($response); $this->error = new ApiError($mvcEvent); }
public function testFromResponseInCookie() { $response = new Response(); $headers = new Headers(); $header = new SetCookie("foo", "bar"); $header->setDomain("www.zend.com"); $header->setPath("/"); $headers->addHeader($header); $response->setHeaders($headers); $response = Cookies::fromResponse($response, "http://www.zend.com"); $this->assertSame($header, $response->getCookie('http://www.zend.com', 'foo')); }
public function testWrongContentTypeThrowsInvalidResponseException() { $this->setExpectedException('Magium\\Mail\\Api\\InvalidResponseException'); $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']); $client = $builder->getMock(); /* @var $client \Zend\Http\Client */ $response = new Response(); $response->setContent(json_encode(['error' => 'error message'])); $response->setHeaders(Headers::fromString('Content-Type: wrong')); $client->expects($this->once())->method('send')->willReturn($response); $generator = new Generator(new Configuration(), $client, 'abcd'); $generator->generate(); }
public function testUrlIsRight() { $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']); $client = $builder->getMock(); /* @var $client \Zend\Http\Client */ $response = new Response(); $response->setContent(json_encode(['email' => '*****@*****.**'])); $response->setHeaders(Headers::fromString('Content-Type: application/json')); $client->expects($this->once())->method('send')->willReturn($response); $configuration = new Configuration(); $generator = new Generator($configuration, $client, 'abcd'); $email = $generator->generate(); self::assertEquals('*****@*****.**', $email); self::assertEquals($configuration->getApiEndpointUrl(), $client->getUri()->toString()); }
private function sendHandshakeResponse() { // Last 8 bytes of the client's handshake are used for key calculation later $l8b = $this->request->getContent(); // Check for 2-key based handshake (Hixie protocol draft) $key1 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key1')->getFieldValue(); $key2 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key2')->getFieldValue(); // Origin checking (TODO) $originHeader = $this->getHandshakeRequest()->getHeader('Origin', null); $host = $this->getHandshakeRequest()->getHeader('Host')->getFieldValue(); $location = $this->getHandshakeRequest()->getUriString(); // Build response $response = new Response(); $response->setStatusCode(101); $response->setReasonPhrase("WebSocket Protocol Handshake"); $headers = new Headers(); $response->setHeaders($headers); $headers->addHeaderLine("Upgrade", "WebSocket"); $headers->addHeaderLine("Connection", "Upgrade"); if ($originHeader) { $headers->addHeaderLine("Sec-WebSocket-Origin", $originHeader->getFieldValue()); } $headers->addHeaderLine("Sec-WebSocket-Location", "ws://{$host}{$location}"); // Build HIXIE response $response->setContent(self::calcHixieResponse($key1, $key2, $l8b)); $this->setResponse($response); $handshakeRequest = new Handshake($this->getHandshakeRequest(), $this->getHandshakeResponse()); $this->emit("handshake", [$handshakeRequest]); if ($handshakeRequest->isAborted()) { $this->close(); } else { $this->socket->write($response->toString()); $this->logger->debug("Got an HYBI style request, sent HYBY handshake response"); $this->emit("connect"); } }
/** * @covers Hermes\Api\Response::__construct * @covers Hermes\Api\Response::getContent */ public function testGetContent() { $http = new Client(); $response = new ZendResponse(); $headers = new Headers(); $headers->addHeaderLine('Content-Type', 'application/json'); $response->setHeaders($headers); $response->setContent(static::$sampleJson); $this->object = new Response($http, $response); $content = $this->object->getContent(); }