Skip to content

Commit 3a73c56

Browse files
author
Witold Wasiczko
committed
Fixes and improvements
1 parent 92fd79e commit 3a73c56

11 files changed

+88
-35
lines changed

src/Exception/InvalidRequestId.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
namespace PhpMiddleware\RequestId\Exception;
44

5-
class InvalidRequestId extends \UnexpectedValueException
6-
{
5+
use UnexpectedValueException;
76

7+
class InvalidRequestId extends UnexpectedValueException implements RequestIdExceptionInterface
8+
{
89
}

src/Exception/MissingRequestId.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
namespace PhpMiddleware\RequestId\Exception;
44

5-
class MissingRequestId extends \UnexpectedValueException
6-
{
5+
use UnexpectedValueException;
76

7+
class MissingRequestId extends UnexpectedValueException implements RequestIdExceptionInterface
8+
{
89
}

src/Exception/NotGenerated.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@
44

55
class NotGenerated extends MissingRequestId
66
{
7-
87
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace PhpMiddleware\RequestId\Exception;
4+
5+
interface RequestIdExceptionInterface
6+
{
7+
}

src/RequestIdMiddleware.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,20 @@
33
namespace PhpMiddleware\RequestId;
44

55
use PhpMiddleware\RequestId\Exception\NotGenerated;
6-
use PhpMiddleware\RequestId\Generator\GeneratorInterface;
7-
use PhpMiddleware\RequestId\OverridePolicy\OverridePolicyInterface;
6+
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface as RequestIdProviderFactory;
87
use Psr\Http\Message\ResponseInterface;
98
use Psr\Http\Message\ServerRequestInterface;
109

11-
class RequestIdMiddleware implements RequestIdProviderInterface
10+
final class RequestIdMiddleware implements RequestIdProviderInterface
1211
{
12+
const DEFAULT_RESPONSE_HEADER = 'X-Request-Id';
1313
const ATTRIBUTE_NAME = 'request-id';
1414

1515
/**
16-
* @var RequestIdProviderFactoryInterface
16+
* @var RequestIdProviderFactory
1717
*/
1818
protected $requestIdProviderFactory;
1919

20-
2120
/**
2221
* @var mixed
2322
*/
@@ -28,14 +27,14 @@ class RequestIdMiddleware implements RequestIdProviderInterface
2827
*/
2928
protected $responseHeader;
3029

31-
3230
/**
33-
* @param GeneratorInterface $generator
34-
* @param bool|OverridePolicyInterface $allowOverride
31+
* @param RequestIdProviderFactory $requestIdProviderFactory
3532
* @param string $responseHeader
36-
* @param string $requestHeader
3733
*/
38-
public function __construct(RequestIdProviderFactoryInterface $requestIdProviderFactory, $responseHeader = RequestIdProviderInterface::DEFAULT_HEADER_REQUEST_ID) {
34+
public function __construct(
35+
RequestIdProviderFactory $requestIdProviderFactory,
36+
$responseHeader = self::DEFAULT_RESPONSE_HEADER
37+
) {
3938
$this->requestIdProviderFactory = $requestIdProviderFactory;
4039
$this->responseHeader = $responseHeader;
4140
}
@@ -49,7 +48,6 @@ public function __construct(RequestIdProviderFactoryInterface $requestIdProvider
4948
*/
5049
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
5150
{
52-
/** @var RequestIdProviderInterface $requestIdProvider */
5351
$requestIdProvider = $this->requestIdProviderFactory->create($request);
5452

5553
$this->requestId = $requestIdProvider->getRequestId();

src/RequestIdProvider.php

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
use PhpMiddleware\RequestId\OverridePolicy\OverridePolicyInterface;
88
use Psr\Http\Message\ServerRequestInterface;
99

10-
class RequestIdProvider implements RequestIdProviderInterface
10+
final class RequestIdProvider implements RequestIdProviderInterface
1111
{
12+
const DEFAULT_REQUEST_HEADER = 'X-Request-Id';
13+
1214
/**
1315
* @var ServerRequestInterface
1416
*/
@@ -35,11 +37,17 @@ class RequestIdProvider implements RequestIdProviderInterface
3537
*/
3638
protected $requestHeader;
3739

40+
/**
41+
* @param ServerRequestInterface $request
42+
* @param GeneratorInterface $generator
43+
* @param bool|OverridePolicyInterface $allowOverride
44+
* @param string $requestHeader
45+
*/
3846
public function __construct(
3947
ServerRequestInterface $request,
4048
GeneratorInterface $generator,
4149
$allowOverride = true,
42-
$requestHeader = RequestIdProviderInterface::DEFAULT_HEADER_REQUEST_ID
50+
$requestHeader = self::DEFAULT_REQUEST_HEADER
4351
)
4452
{
4553
$this->request = $request;
@@ -48,9 +56,17 @@ public function __construct(
4856
$this->requestHeader = $requestHeader;
4957
}
5058

51-
59+
/**
60+
* @return mixed
61+
*
62+
* @throws RequestIdExceptionInterface
63+
*/
5264
public function getRequestId()
5365
{
66+
if ($this->requestId !== null) {
67+
return $this->requestId;
68+
}
69+
5470
if ($this->isPossibleToGetFromRequest($this->request)) {
5571
$requestId = $this->request->getHeaderLine($this->requestHeader);
5672

@@ -67,6 +83,8 @@ public function getRequestId()
6783
throw new InvalidRequestId('Request id is not a string');
6884
}
6985
}
86+
$this->requestId = $requestId;
87+
7088
return $requestId;
7189
}
7290

src/RequestIdProviderFactory.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
namespace PhpMiddleware\RequestId;
44

55
use PhpMiddleware\RequestId\Generator\GeneratorInterface;
6+
use PhpMiddleware\RequestId\OverridePolicy\OverridePolicyInterface;
67
use Psr\Http\Message\ServerRequestInterface;
78

89
/**
910
* @codeCoverageIgnore
1011
*/
11-
class RequestIdProviderFactory implements RequestIdProviderFactoryInterface
12+
final class RequestIdProviderFactory implements RequestIdProviderFactoryInterface
1213
{
13-
1414
/**
1515
* @var GeneratorInterface
1616
*/
@@ -22,22 +22,29 @@ class RequestIdProviderFactory implements RequestIdProviderFactoryInterface
2222
protected $allowOverride;
2323

2424
/**
25-
*
2625
* @var string
2726
*/
2827
protected $requestHeader;
2928

29+
/**
30+
* @param GeneratorInterface $generator
31+
* @param bool|OverridePolicyInterface $allowOverride
32+
* @param string $requestHeader
33+
*/
3034
public function __construct(
3135
GeneratorInterface $generator,
3236
$allowOverride = true,
33-
$requestHeader = RequestIdProviderInterface::DEFAULT_HEADER_REQUEST_ID
34-
)
35-
{
37+
$requestHeader = RequestIdProvider::DEFAULT_REQUEST_HEADER
38+
) {
3639
$this->generator = $generator;
3740
$this->allowOverride = $allowOverride;
3841
$this->requestHeader = $requestHeader;
3942
}
4043

44+
/**
45+
* @param ServerRequestInterface $request
46+
* @return RequestIdProvider
47+
*/
4148
public function create(ServerRequestInterface $request)
4249
{
4350
return new RequestIdProvider($request, $this->generator, $this->allowOverride, $this->requestHeader);

src/RequestIdProviderFactoryInterface.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
interface RequestIdProviderFactoryInterface
88
{
99
/**
10-
* @return RequestIdProviderInterface
10+
* @param ServerRequestInterface $request
11+
* @return RequestIdProvider
1112
*/
1213
public function create(ServerRequestInterface $request);
1314
}

src/RequestIdProviderInterface.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22

33
namespace PhpMiddleware\RequestId;
44

5+
use PhpMiddleware\RequestId\Exception\RequestIdExceptionInterface;
6+
57
interface RequestIdProviderInterface
68
{
7-
const DEFAULT_HEADER_REQUEST_ID = 'X-Request-Id';
8-
9+
/**
10+
* @return mixed
11+
*
12+
* @throws RequestIdExceptionInterface
13+
*/
914
public function getRequestId();
1015
}

test/RequestIdMiddlewareTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use PhpMiddleware\RequestId\Exception\MissingRequestId;
66
use PhpMiddleware\RequestId\RequestIdMiddleware;
7+
use PhpMiddleware\RequestId\RequestIdProvider;
78
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface;
89
use PhpMiddleware\RequestId\RequestIdProviderInterface;
910
use PHPUnit_Framework_TestCase;
@@ -38,7 +39,7 @@ public function testEmmitRequestIdToResponse()
3839

3940
$this->assertTrue($calledOut, 'Out is not called');
4041
$this->assertNotSame($response, $result);
41-
$this->assertEquals('123456789', $result->getHeaderLine(RequestIdMiddleware::DEFAULT_HEADER_REQUEST_ID));
42+
$this->assertEquals('123456789', $result->getHeaderLine(RequestIdProvider::DEFAULT_REQUEST_HEADER));
4243
$this->assertSame('123456789', $middleware->getRequestId());
4344
}
4445

@@ -67,7 +68,7 @@ public function testNotEmmitRequestIdToResponse()
6768

6869
$this->assertTrue($calledOut, 'Out is not called');
6970
$this->assertSame($response, $result);
70-
$this->assertEquals(null, $result->getHeaderLine(RequestIdMiddleware::DEFAULT_HEADER_REQUEST_ID));
71+
$this->assertEquals(null, $result->getHeaderLine(RequestIdProvider::DEFAULT_REQUEST_HEADER));
7172
$this->assertSame('123456789', $middleware->getRequestId());
7273
}
7374

0 commit comments

Comments
 (0)