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 testResponseCanRenderStatusLine() { $response = new Response(); $response->setVersion(1.1); $response->setStatusCode(Response::STATUS_CODE_404); $this->assertEquals('HTTP/1.1 404 Not Found', $response->renderStatusLine()); $response->setReasonPhrase('Foo Bar'); $this->assertEquals('HTTP/1.1 404 Foo Bar', $response->renderStatusLine()); }
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"); } }
/** * {@inheritDoc} */ public function prepareResponse(HttpResponse $response) { $response->setStatusCode($this->getCode()); $response->setReasonPhrase($this->getMessage()); }
/** * Retrieve response by version and name * * @param string $version version * @param string $name name * @param boolean $validity validity * * @throws RuntimeException * @return \Zend\Http\Response */ protected function getResponse($version, $name, $validity = true) { // $file = realpath( // \VUFIND_PHPUNIT_MODULE_PATH . self::FIXTURE_DIRECTORY . 'responses/' . // ($validity ? 'valid' : 'invalid') . '/' . $version . '/' . $name // ); $file = realpath(\VUFIND_PHPUNIT_MODULE_PATH . self::FIXTURE_DIRECTORY . 'responses/' . $version . '/' . $name); if (!$file) { throw new RuntimeException(sprintf('Unable to resolve fixture file: %s', $name)); } $content = file_get_contents($file); $response = new Response(); $response->setContent($content); $response->setStatusCode(Response::STATUS_CODE_200); $response->setReasonPhrase('OK'); return $response; }
/** * withStatus * * @param int $statusCode * @param string $reasonPhrase * * @return $this */ public function withStatus($statusCode, $reasonPhrase = '') { parent::setStatusCode($statusCode); parent::setReasonPhrase($reasonPhrase); return $this; }
/** * Convert a PSR-7 response to ZF2 response * * @param ResponseInterface $response * @return HttpResponse */ private function convertToZfResponse(ResponseInterface $response) { $zfResponse = new HttpResponse(); $zfResponse->setStatusCode($response->getStatusCode()); $zfResponse->setReasonPhrase($response->getReasonPhrase()); $zfResponse->setContent((string) $response->getBody()); foreach ($response->getHeaders() as $name => $values) { $zfResponse->getHeaders()->addHeaderLine($name, implode(", ", $values)); } return $zfResponse; }