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 testDispatchPutRequest() { $entityBodyFactory = new Bringit_EntityBodyFactory(); $body = $entityBodyFactory->createFromString('test content'); $header = new Bringit_Header_RequestHeader(); $builder = new Bringit_RequestBuilder(); $request = $builder->method(Bringit_Request::METHOD_PUT)->url('http://' . self::TESTHOST . '/test')->header($header)->body($body)->create(); $dispatcher = new Bringit_RequestDispatcher(); $response = $dispatcher->dispatch($request); $responseBody = $response->entityBody()->contentString(); $this->assertWantedPattern('#The requested method PUT is not allowed#', $responseBody); }
public function testDispatchPutRequest() { $entityBodyFactory = new Bringit_EntityBodyFactory(); $body = $entityBodyFactory->createFromString('test content'); $header = new Bringit_Header_RequestHeader(); $builder = new Bringit_RequestBuilder(); $request = $builder->method(Bringit_Request::METHOD_PUT)->url('http://' . self::TESTHOST . '/test')->header($header)->body($body)->create(); $dispatcher = new Bringit_RequestDispatcher(); $response = $dispatcher->dispatch($request); $responseBody = $response->entityBody()->contentString(); $host = self::TESTHOST; $this->assertEqual("PUT /test HTTP/1.1\r\n" . "Host: {$host}\r\n" . "Content-Length: 12\r\n" . "\r\n" . "test content", $responseBody); }
public function testPutRequest() { $builder = new Bringit_RequestBuilder(); $url = new Bringit_Url('http://example.org:81/blarg'); $header = new Bringit_Header_RequestHeader(); $header['Content-Type'] = 'text/plain'; $entityBodyFactory = new Bringit_EntityBodyFactory(); $entityBody = $entityBodyFactory->createFromString('testing'); $request = $builder->method(Bringit_Request::METHOD_PUT)->url($url)->header($header)->body($entityBody)->create(); $this->assertIsA($request, 'Bringit_Request'); $this->assertEqual($request->requestMethod(), Bringit_Request::METHOD_PUT); $this->assertReference($request->url(), $url); $this->assertReference($request->header(), $header); $this->assertTrue($request->hasEntityBody(), 'should have entity body'); $this->assertReference($request->entityBody(), $entityBody); $this->assertEqual($request->requestLine()->__toString(), "PUT /blarg HTTP/1.1\r\n"); $this->assertEqual($header['Host'], 'example.org:81'); }
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); }