mirror of
https://github.com/guzzle/guzzle.git
synced 2025-02-11 19:14:38 +01:00
Adding some simple middleware helpers
This commit is contained in:
parent
aab03d40c5
commit
0123fa5420
@ -4,7 +4,6 @@ namespace GuzzleHttp;
|
||||
use GuzzleHttp\Cookie\CookieJarInterface;
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\ServerException;
|
||||
use GuzzleHttp\Promise\RejectedPromise;
|
||||
use GuzzleHttp\Psr7;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
@ -228,4 +227,38 @@ final class Middleware
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware that applies a map function to the request before passing to
|
||||
* the next handler.
|
||||
*
|
||||
* @param callable $fn Function that accepts a RequestInterface and returns
|
||||
* a RequestInterface.
|
||||
* @return callable
|
||||
*/
|
||||
public static function mapRequest(callable $fn)
|
||||
{
|
||||
return function (callable $handler) use ($fn) {
|
||||
return function ($request, array $options) use ($handler, $fn) {
|
||||
return $handler($fn($request), $options);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware that applies a map function to the resolved promise's
|
||||
* response.
|
||||
*
|
||||
* @param callable $fn Function that accepts a ResponseInterface and
|
||||
* returns a ResponseInterface.
|
||||
* @return callable
|
||||
*/
|
||||
public static function mapResponse(callable $fn)
|
||||
{
|
||||
return function (callable $handler) use ($fn) {
|
||||
return function ($request, array $options) use ($handler, $fn) {
|
||||
return $handler($request, $options)->then($fn);
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ use GuzzleHttp\Psr7\FnStream;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
class MiddlewareTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
@ -252,4 +253,34 @@ class MiddlewareTest extends \PHPUnit_Framework_TestCase
|
||||
$response = $p->wait();
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
}
|
||||
|
||||
public function testMapsRequest()
|
||||
{
|
||||
$h = new MockHandler([
|
||||
function (RequestInterface $request, array $options) {
|
||||
$this->assertEquals('foo', $request->getHeader('Bar'));
|
||||
return new Response(200);
|
||||
}
|
||||
]);
|
||||
$stack = new HandlerStack($h);
|
||||
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
|
||||
return $request->withHeader('Bar', 'foo');
|
||||
}));
|
||||
$comp = $stack->resolve();
|
||||
$p = $comp(new Request('PUT', 'http://www.google.com'), []);
|
||||
$this->assertInstanceOf('GuzzleHttp\Promise\FulfilledPromise', $p);
|
||||
}
|
||||
|
||||
public function testMapsResponse()
|
||||
{
|
||||
$h = new MockHandler([new Response(200)]);
|
||||
$stack = new HandlerStack($h);
|
||||
$stack->push(Middleware::mapResponse(function (ResponseInterface $response) {
|
||||
return $response->withHeader('Bar', 'foo');
|
||||
}));
|
||||
$comp = $stack->resolve();
|
||||
$p = $comp(new Request('PUT', 'http://www.google.com'), []);
|
||||
$this->assertInstanceOf('GuzzleHttp\Promise\FulfilledPromise', $p);
|
||||
$this->assertEquals('foo', $p->wait()->getHeader('Bar'));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user