public function testSimpleEntityBodyMidStream() { $stream = fopen('php://memory', 'w'); fwrite($stream, 'test stream data'); fseek($stream, 9, SEEK_SET); $factory = new Bringit_EntityBodyFactory(); $body = $factory->createFromStream($stream); $this->assertEqual($body->contentLength(), 7); $this->assertEqual(fread($body->contentStream(), 1024), 'am data'); }
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); }