Skip to content

Commit

Permalink
Streaming Message documentation and move internal message classes
Browse files Browse the repository at this point in the history
  • Loading branch information
clue committed Jul 11, 2020
1 parent cc94133 commit 552dbdd
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 47 deletions.
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@ multiple concurrent HTTP requests without blocking.
* [React\Http\Message](#reacthttpmessage)
* [Response](#response)
* [ServerRequest](#serverrequest)
* [ResponseException](#responseexception)
* [React\Http\Middleware](#reacthttpmiddleware)
* [StreamingRequestMiddleware](#streamingrequestmiddleware)
* [LimitConcurrentRequestsMiddleware](#limitconcurrentrequestsmiddleware)
* [RequestBodyBufferMiddleware](#requestbodybuffermiddleware)
* [RequestBodyParserMiddleware](#requestbodyparsermiddleware)
* [ResponseException](#responseexception)
* [Install](#install)
* [Tests](#tests)
* [License](#license)
Expand Down Expand Up @@ -2418,6 +2418,19 @@ application reacts to certain HTTP requests.
request message and only adds required server methods. This base class is
considered an implementation detail that may change in the future.

#### ResponseException

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).

The `getCode(): int` method can be used to
return the HTTP response status code.

The `getResponse(): ResponseInterface` method can be used to
access its underlying response object.

### React\Http\Middleware

#### StreamingRequestMiddleware
Expand Down Expand Up @@ -2710,19 +2723,6 @@ new React\Http\Middleware\RequestBodyParserMiddleware(10 * 1024, 100); // 100 fi
If you want to respect this setting, you have to check its value and
effectively avoid using this middleware entirely.

### ResponseException

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).

The `getCode(): int` method can be used to
return the HTTP response status code.

The `getResponse(): ResponseInterface` method can be used to
access its underlying response object.

## Install

The recommended way to install this library is [through Composer](https://getcomposer.org).
Expand Down
2 changes: 1 addition & 1 deletion src/Browser.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

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 React\Promise\PromiseInterface;
use React\Socket\ConnectorInterface;
use React\Stream\ReadableStreamInterface;
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
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

0 comments on commit 552dbdd

Please sign in to comment.