public function testParseFromString() { $parser = new Bringit_Header_ResponseHeaderParser(); $header = $parser->parse("HTTP/1.1 200 OK\r\ncontent-length: 1024\r\n"); $this->assertEqual($header->fields(), array(new Bringit_Header_HeaderField('Content-Length', '1024'))); $status = $header->statusLine(); $this->assertEqual($status->httpVersion(), '1.1'); $this->assertEqual($status->responseCode(), '200'); $this->assertEqual($status->reasonPhrase(), 'OK'); $this->assertEqual($status->__toString(), "HTTP/1.1 200 OK\r\n"); }
public function handleRequest($request) { $url = $request->url(); $socket = fsockopen($this->_ipAddress, $url->port(), $errno, $errstr, self::SOCKET_TIMEOUT_OPEN); if (!$socket) { throw new Bringit_Exception_ConnectionException(sprintf("Unable to open socket to %s:%d for %s (%d: %s)", $this->_ipAddress, $url->port(), $url, $errno, $errstr)); } // write request line to socket fwrite($socket, $request->requestLine()->__toString()); // write headers to socket fwrite($socket, $request->header()->__toString()); if ($request->hasEntityBody()) { $bodyStream = $request->entityBody()->contentStream(); while (!feof($bodyStream)) { fwrite($socket, fread($bodyStream, self::FREAD_CHUNKSIZE)); } } $parser = new Bringit_Header_ResponseHeaderParser(); $responseHeader = $parser->parseStream($socket); $entityBodyFactory = new Bringit_EntityBodyFactory(); $entityBody = $entityBodyFactory->createFromStream($socket); return new Bringit_Response($request, $responseHeader, $entityBody); }