Skip to content

Commit 00fea86

Browse files
committed
Merge pull request #4 from pawgre/feature/generate_request_id
Generating the request id for the request other than http
2 parents cbdfc11 + ef618eb commit 00fea86

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

src/RequestIdListener.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
namespace RstGroup\RequestIdModule;
33

44
use PhpMiddleware\RequestId\Exception\MissingRequestId;
5-
use PhpMiddleware\RequestId\Exception\RequestIdExceptionInterface;
5+
use PhpMiddleware\RequestId\Generator\GeneratorInterface;
66
use PhpMiddleware\RequestId\RequestIdProviderInterface;
77
use Zend\EventManager\AbstractListenerAggregate;
88
use Zend\EventManager\EventManagerInterface;
@@ -29,13 +29,18 @@ final class RequestIdListener extends AbstractListenerAggregate implements Reque
2929

3030
protected $requestIdProviderFactory;
3131

32-
public function __construct(RequestIdProviderFactoryInterface $requestIdProviderFactory, $requestIdHeaderName = self::DEFAULT_REQUEST_ID_HEADER)
32+
private $requestIdGenerator;
33+
34+
public function __construct(RequestIdProviderFactoryInterface $requestIdProviderFactory,
35+
$requestIdHeaderName = self::DEFAULT_REQUEST_ID_HEADER,
36+
GeneratorInterface $requestIdGenerator = null)
3337
{
3438
$this->requestIdProviderFactory = $requestIdProviderFactory;
3539
$this->requestIdHeaderName = $requestIdHeaderName;
40+
$this->requestIdGenerator = $requestIdGenerator;
3641
}
3742

38-
public function attach(EventManagerInterface $events)
43+
public function attach(EventManagerInterface $events, $priority = 1)
3944
{
4045
$this->listeners[] = $events->attach(MvcEvent::EVENT_BOOTSTRAP, [$this, 'loadRequestId']);
4146
$this->listeners[] = $events->attach(MvcEvent::EVENT_FINISH, [$this, 'addRequestIdToResponse']);
@@ -45,16 +50,16 @@ public function loadRequestId(MvcEvent $event)
4550
{
4651
$request = $event->getRequest();
4752

48-
if (!$request instanceof HttpRequest) {
49-
return;
50-
}
51-
$psr7Request = Psr7ServerRequest::fromZend($request);
52-
53-
$requestIdProvider = $this->requestIdProviderFactory->create($psr7Request);
53+
if ($request instanceof HttpRequest) {
54+
$psr7Request = Psr7ServerRequest::fromZend($request);
55+
$requestIdProvider = $this->requestIdProviderFactory->create($psr7Request);
56+
$this->requestId = $requestIdProvider->getRequestId();
5457

55-
$this->requestId = $requestIdProvider->getRequestId();
58+
} elseif ($this->requestIdGenerator !== null) {
59+
$this->requestId = $this->requestIdGenerator->generateRequestId();
60+
}
5661

57-
return $this->requestId ;
62+
return $this->requestId;
5863
}
5964

6065
public function getRequestId()

src/RequestIdListenerFactory.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
<?php
22
namespace RstGroup\RequestIdModule;
33

4+
use PhpMiddleware\RequestId\Generator\GeneratorInterface;
45
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface;
56

67
class RequestIdListenerFactory
78
{
89
public function __invoke($services)
910
{
11+
$requestIdGenerator = $services->get(GeneratorInterface::class);
1012
$requestIdProviderFactory = $services->get(RequestIdProviderFactoryInterface::class);
1113

1214
$config = $services->get('Config');
1315
$requestIdHeaderName = $config['rst_group']['request_id_module']['header_name'];
1416

15-
return new RequestIdListener($requestIdProviderFactory, $requestIdHeaderName);
17+
return new RequestIdListener($requestIdProviderFactory, $requestIdHeaderName, $requestIdGenerator);
1618
}
17-
}
19+
}

test/RequestIdListenerTest.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
namespace RstGroup\RequestIdModule\Test;
33

44
use PhpMiddleware\RequestId\Exception\MissingRequestId;
5+
use PhpMiddleware\RequestId\Generator\GeneratorInterface;
56
use PhpMiddleware\RequestId\RequestIdProviderFactoryInterface;
67
use PhpMiddleware\RequestId\RequestIdProviderInterface;
78
use RstGroup\RequestIdModule\RequestIdListener;
@@ -85,7 +86,7 @@ public function it_not_add_request_id_to_response_after_load_request_id()
8586
/**
8687
* @test
8788
*/
88-
public function it_not_load_request_id_if_not_http_request()
89+
public function it_not_load_request_id_if_not_http_request_and_generator_is_undefined()
8990
{
9091
$requestIdListener = new RequestIdListener($this->requestIdProviderFactoryInterface);
9192

@@ -100,6 +101,25 @@ public function it_not_load_request_id_if_not_http_request()
100101
$this->assertNull($requestId);
101102
}
102103

104+
/**
105+
* @test
106+
*/
107+
public function it_create_request_id_if_not_http_request()
108+
{
109+
$requestId = 'e5dd58f4-b72d-4d7e-b0c9-d99040386a58';
110+
$requestIdGenerator = $this->getMock(GeneratorInterface::class);
111+
$requestIdGenerator->method('generateRequestId')->willReturn($requestId);
112+
113+
$requestIdListener = new RequestIdListener($this->requestIdProviderFactoryInterface, RequestIdListener::DEFAULT_REQUEST_ID_HEADER, $requestIdGenerator);
114+
115+
$mvcEvent = new MvcEvent();
116+
$mvcEvent->setRequest(new ConsoleRequest());
117+
118+
$requestIdListener->loadRequestId($mvcEvent);
119+
120+
$this->assertSame($requestId, $requestIdListener->getRequestId());
121+
}
122+
103123
/**
104124
* @test
105125
*/

0 commit comments

Comments
 (0)