Skip to content

Commit 98e8f76

Browse files
authored
Merge pull request #2 from php-api-clients/middleware-accept-json-middleware
Accept JSON header middleware
2 parents ad528d6 + 5f4101c commit 98e8f76

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

src/AcceptJsonMiddleware.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace ApiClients\Middleware\Json;
4+
5+
use ApiClients\Foundation\Middleware\DefaultPriorityTrait;
6+
use ApiClients\Foundation\Middleware\ErrorTrait;
7+
use ApiClients\Foundation\Middleware\MiddlewareInterface;
8+
use ApiClients\Foundation\Middleware\PostTrait;
9+
use Psr\Http\Message\RequestInterface;
10+
use React\Promise\CancellablePromiseInterface;
11+
use function React\Promise\resolve;
12+
13+
class AcceptJsonMiddleware implements MiddlewareInterface
14+
{
15+
use PostTrait;
16+
use ErrorTrait;
17+
use DefaultPriorityTrait;
18+
19+
/**
20+
* @param RequestInterface $request
21+
* @param array $options
22+
* @return CancellablePromiseInterface
23+
*/
24+
public function pre(RequestInterface $request, array $options = []): CancellablePromiseInterface
25+
{
26+
return resolve($request->withAddedHeader('Accept', 'application/json'));
27+
}
28+
}

tests/AcceptJsonMiddlewareTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace ApiClients\Tests\Middleware\Json;
4+
5+
use ApiClients\Middleware\Json\AcceptJsonMiddleware;
6+
use ApiClients\Tools\TestUtilities\TestCase;
7+
use React\EventLoop\Factory;
8+
use RingCentral\Psr7\Request;
9+
use function Clue\React\Block\await;
10+
11+
class AcceptJsonMiddlewareTest extends TestCase
12+
{
13+
public function testPre()
14+
{
15+
$middleware = new AcceptJsonMiddleware();
16+
$request = new Request('GET', 'https://example.com', [], '');
17+
18+
$modifiedRequest = await($middleware->pre($request), Factory::create());
19+
self::assertSame(
20+
[
21+
'Host' => ['example.com'],
22+
'Accept' => ['application/json'],
23+
],
24+
$modifiedRequest->getHeaders()
25+
);
26+
}
27+
}

0 commit comments

Comments
 (0)