Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve documentation and use fully-qualified class names throughout the documentation #375

Merged
merged 3 commits into from
Jul 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
299 changes: 146 additions & 153 deletions README.md

Large diffs are not rendered by default.

11 changes: 5 additions & 6 deletions src/Browser.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@

namespace React\Http;

use Psr\Http\Message\ResponseInterface;
use React\EventLoop\LoopInterface;
use React\Http\Io\MessageFactory;
use React\Http\Io\Sender;
use React\Http\Io\Transaction;
use React\Http\Message\MessageFactory;
use InvalidArgumentException;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\UriInterface;
use React\EventLoop\LoopInterface;
use React\Promise\PromiseInterface;
use React\Socket\ConnectorInterface;
use React\Stream\ReadableStreamInterface;
use InvalidArgumentException;

/**
* @final This class is final and shouldn't be extended as it is likely to be marked final in a future relase.
Expand Down Expand Up @@ -719,7 +718,7 @@ private function withOptions(array $options)

/**
* @param string $method
* @param string|UriInterface $url
* @param string $url
* @param array $headers
* @param string|ReadableStreamInterface $contents
* @return PromiseInterface<ResponseInterface,Exception>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace React\Http\Message;
namespace React\Http\Io;

use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\UriInterface;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace React\Http\Message;
namespace React\Http\Io;

use Evenement\EventEmitter;
use Psr\Http\Message\StreamInterface;
Expand Down
1 change: 0 additions & 1 deletion src/Io/Sender.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace React\Http\Io;

use React\Http\Message\MessageFactory;
use Psr\Http\Message\RequestInterface;
use React\EventLoop\LoopInterface;
use React\Http\Client\Client as HttpClient;
Expand Down
3 changes: 1 addition & 2 deletions src/Io/Transaction.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

namespace React\Http\Io;

use React\Http\Message\ResponseException;
use React\Http\Message\MessageFactory;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
use React\EventLoop\LoopInterface;
use React\Http\Message\ResponseException;
use React\Promise\Deferred;
use React\Promise\PromiseInterface;
use React\Stream\ReadableStreamInterface;
Expand Down
7 changes: 3 additions & 4 deletions src/Message/Response.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,9 @@
* which in turn extends the
* [PSR-7 `MessageInterface`](https://www.php-fig.org/psr/psr-7/#31-psrhttpmessagemessageinterface).
*
* > Internally, this class extends the underlying `\RingCentral\Psr7\Response`
* class. The only difference is that this class will accept implemenations
* of ReactPHPs `ReadableStreamInterface` for the `$body` argument. This base
* class is considered an implementation detail that may change in the future.
* > Internally, this implementation builds on top of an existing incoming
* response message and only adds required streaming support. This base class is
* considered an implementation detail that may change in the future.
*
* @see \Psr\Http\Message\ResponseInterface
*/
Expand Down
4 changes: 2 additions & 2 deletions src/Message/ResponseException.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Psr\Http\Message\ResponseInterface;

/**
* The `ResponseException` is an `Exception` sub-class that will be used to reject
* The `React\Http\Message\ResponseException` is an `Exception` sub-class that will be used to reject
* a request promise if the remote server returns a non-success status code
* (anything but 2xx or 3xx).
* You can control this behavior via the [`withRejectErrorResponse()` method](#withrejecterrorresponse).
Expand All @@ -32,7 +32,7 @@ public function __construct(ResponseInterface $response, $message = null, $code
}

/**
* Access its underlying [`ResponseInterface`](#responseinterface) object.
* Access its underlying response object.
*
* @return ResponseInterface
*/
Expand Down
28 changes: 14 additions & 14 deletions src/Middleware/LimitConcurrentRequestsMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@
* than 10 handlers will be invoked at once:
*
* ```php
* $server = new Server(
* $server = new React\Http\Server(
* $loop,
* new StreamingRequestMiddleware(),
* new LimitConcurrentRequestsMiddleware(10),
* new React\Http\Middleware\StreamingRequestMiddleware(),
* new React\Http\Middleware\LimitConcurrentRequestsMiddleware(10),
* $handler
* );
* ```
Expand All @@ -42,12 +42,12 @@
* to limit the total number of requests that can be buffered at once:
*
* ```php
* $server = new Server(
* $server = new React\Http\Server(
* $loop,
* new StreamingRequestMiddleware(),
* new LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
* new RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request
* new RequestBodyParserMiddleware(),
* new React\Http\Middleware\StreamingRequestMiddleware(),
* new React\Http\Middleware\LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
* new React\Http\Middleware\RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request
* new React\Http\Middleware\RequestBodyParserMiddleware(),
* $handler
* );
* ```
Expand All @@ -57,13 +57,13 @@
* processes one request after another without any concurrency:
*
* ```php
* $server = new Server(
* $server = new React\Http\Server(
* $loop,
* new StreamingRequestMiddleware(),
* new LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
* new RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request
* new RequestBodyParserMiddleware(),
* new LimitConcurrentRequestsMiddleware(1), // only execute 1 handler (no concurrency)
* new React\Http\Middleware\StreamingRequestMiddleware(),
* new React\Http\Middleware\LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
* new React\Http\Middleware\RequestBodyBufferMiddleware(2 * 1024 * 1024), // 2 MiB per request
* new React\Http\Middleware\RequestBodyParserMiddleware(),
* new React\Http\Middleware\LimitConcurrentRequestsMiddleware(1), // only execute 1 handler (no concurrency)
* $handler
* );
* ```
Expand Down
6 changes: 3 additions & 3 deletions src/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
use React\Socket\ServerInterface;

/**
* The `Server` class is responsible for handling incoming connections and then
* The `React\Http\Server` class is responsible for handling incoming connections and then
* processing each incoming HTTP request.
*
* When a complete HTTP request has been received, it will invoke the given
Expand Down Expand Up @@ -292,9 +292,9 @@ public function __construct(LoopInterface $loop)
*
* @param ServerInterface $socket
*/
public function listen(ServerInterface $server)
public function listen(ServerInterface $socket)
{
$this->streamingServer->listen($server);
$this->streamingServer->listen($socket);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

namespace React\Tests\Http\Message;
namespace React\Tests\Http\Io;

use React\Http\Message\MessageFactory;
use React\Http\Io\MessageFactory;
use PHPUnit\Framework\TestCase;

class MessageFactoryTest extends TestCase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

namespace React\Tests\Http\Message;
namespace React\Tests\Http\Io;

use React\Http\Message\ReadableBodyStream;
use React\Http\Io\ReadableBodyStream;
use React\Tests\Http\TestCase;
use React\Stream\ThroughStream;

Expand Down
38 changes: 19 additions & 19 deletions tests/Io/SenderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
use Clue\React\Block;
use React\Http\Client\Client as HttpClient;
use React\Http\Client\RequestData;
use React\Http\Io\ReadableBodyStream;
use React\Http\Io\Sender;
use React\Http\Message\ReadableBodyStream;
use React\Promise;
use React\Stream\ThroughStream;
use React\Tests\Http\TestCase;
Expand All @@ -26,7 +26,7 @@ public function setUpLoop()

public function testCreateFromLoop()
{
$sender = Sender::createFromLoop($this->loop, null, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = Sender::createFromLoop($this->loop, null, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$this->assertInstanceOf('React\Http\Io\Sender', $sender);
}
Expand All @@ -36,7 +36,7 @@ public function testSenderRejectsInvalidUri()
$connector = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
$connector->expects($this->never())->method('connect');

$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('GET', 'www.google.com');

Expand All @@ -51,7 +51,7 @@ public function testSenderConnectorRejection()
$connector = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
$connector->expects($this->once())->method('connect')->willReturn(Promise\reject(new \RuntimeException('Rejected')));

$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('GET', 'http://www.google.com/');

Expand All @@ -71,7 +71,7 @@ public function testSendPostWillAutomaticallySendContentLengthHeader()
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('POST', 'http://www.google.com/', array(), 'hello');
$sender->send($request);
Expand All @@ -87,7 +87,7 @@ public function testSendPostWillAutomaticallySendContentLengthZeroHeaderForEmpty
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('POST', 'http://www.google.com/', array(), '');
$sender->send($request);
Expand All @@ -106,7 +106,7 @@ public function testSendPostStreamWillAutomaticallySendTransferEncodingChunked()
'1.1'
)->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array(), new ReadableBodyStream($stream));
Expand All @@ -122,7 +122,7 @@ public function testSendPostStreamWillAutomaticallyPipeChunkEncodeBodyForWriteAn
$client = $this->getMockBuilder('React\Http\Client\Client')->disableOriginalConstructor()->getMock();
$client->expects($this->once())->method('request')->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array(), new ReadableBodyStream($stream));
Expand All @@ -142,7 +142,7 @@ public function testSendPostStreamWillAutomaticallyPipeChunkEncodeBodyForEnd()
$client = $this->getMockBuilder('React\Http\Client\Client')->disableOriginalConstructor()->getMock();
$client->expects($this->once())->method('request')->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array(), new ReadableBodyStream($stream));
Expand All @@ -162,7 +162,7 @@ public function testSendPostStreamWillRejectWhenRequestBodyEmitsErrorEvent()
$client = $this->getMockBuilder('React\Http\Client\Client')->disableOriginalConstructor()->getMock();
$client->expects($this->once())->method('request')->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$expected = new \RuntimeException();
$stream = new ThroughStream();
Expand Down Expand Up @@ -192,7 +192,7 @@ public function testSendPostStreamWillRejectWhenRequestBodyClosesWithoutEnd()
$client = $this->getMockBuilder('React\Http\Client\Client')->disableOriginalConstructor()->getMock();
$client->expects($this->once())->method('request')->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array(), new ReadableBodyStream($stream));
Expand Down Expand Up @@ -220,7 +220,7 @@ public function testSendPostStreamWillNotRejectWhenRequestBodyClosesAfterEnd()
$client = $this->getMockBuilder('React\Http\Client\Client')->disableOriginalConstructor()->getMock();
$client->expects($this->once())->method('request')->willReturn($outgoing);

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array(), new ReadableBodyStream($stream));
Expand All @@ -247,7 +247,7 @@ public function testSendPostStreamWithExplicitContentLengthWillSendHeaderAsIs()
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$stream = new ThroughStream();
$request = new Request('POST', 'http://www.google.com/', array('Content-Length' => '100'), new ReadableBodyStream($stream));
Expand All @@ -264,7 +264,7 @@ public function testSendGetWillNotPassContentLengthHeaderForEmptyRequestBody()
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('GET', 'http://www.google.com/');
$sender->send($request);
Expand All @@ -280,7 +280,7 @@ public function testSendCustomMethodWillNotPassContentLengthHeaderForEmptyReques
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('CUSTOM', 'http://www.google.com/');
$sender->send($request);
Expand All @@ -296,7 +296,7 @@ public function testSendCustomMethodWithExplicitContentLengthZeroWillBePassedAsI
'1.1'
)->willReturn($this->getMockBuilder('React\Http\Client\Request')->disableOriginalConstructor()->getMock());

$sender = new Sender($client, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($client, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('CUSTOM', 'http://www.google.com/', array('Content-Length' => '0'));
$sender->send($request);
Expand All @@ -311,7 +311,7 @@ public function testCancelRequestWillCancelConnector()
$connector = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
$connector->expects($this->once())->method('connect')->willReturn($promise);

$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('GET', 'http://www.google.com/');

Expand All @@ -330,7 +330,7 @@ public function testCancelRequestWillCloseConnection()
$connector = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
$connector->expects($this->once())->method('connect')->willReturn(Promise\resolve($connection));

$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender(new HttpClient($this->loop, $connector), $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());

$request = new Request('GET', 'http://www.google.com/');

Expand Down Expand Up @@ -387,7 +387,7 @@ public function testRequestProtocolVersion(Request $Request, $method, $uri, $hea

$http->expects($this->once())->method('request')->with($method, $uri, $headers, $protocolVersion)->willReturn($request);

$sender = new Sender($http, $this->getMockBuilder('React\Http\Message\MessageFactory')->getMock());
$sender = new Sender($http, $this->getMockBuilder('React\Http\Io\MessageFactory')->getMock());
$sender->send($Request);
}
}
8 changes: 4 additions & 4 deletions tests/Io/TransactionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
namespace React\Tests\Http\Io;

use Clue\React\Block;
use React\Http\Io\Transaction;
use React\Http\Message\MessageFactory;
use React\Http\Message\ResponseException;
use React\Tests\Http\TestCase;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\RequestInterface;
use React\Http\Io\MessageFactory;
use React\Http\Io\Transaction;
use React\Http\Message\ResponseException;
use React\EventLoop\Factory;
use React\Promise;
use React\Promise\Deferred;
use React\Stream\ThroughStream;
use React\Tests\Http\TestCase;
use RingCentral\Psr7\Response;

class TransactionTest extends TestCase
Expand Down