Skip to content

Commit 6c5a294

Browse files
authored
Merge pull request #5 from bilfeldt/fixes/binary-files
Fix binary file response issue
2 parents c9f2091 + 5be255b commit 6c5a294

File tree

5 files changed

+42
-6
lines changed

5 files changed

+42
-6
lines changed

src/Middleware/ClientRequestIdMiddleware.php

+7-3
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ class ClientRequestIdMiddleware
1313
* Handle an incoming request.
1414
*
1515
* @param \Illuminate\Http\Request $request
16-
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
17-
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
16+
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
17+
* @return \Symfony\Component\HttpFoundation\Response
1818
*/
1919
public function handle(Request $request, Closure $next): Response
2020
{
21-
return $next($request)->header(CorrelationIdServiceProvider::getClientRequestIdHeaderName(), $request->getClientRequestId());
21+
$response = $next($request);
22+
23+
$response->headers->set(CorrelationIdServiceProvider::getClientRequestIdHeaderName(), $request->getClientRequestId());
24+
25+
return $response;
2226
}
2327
}

src/Middleware/CorrelationIdMiddleware.php

+7-3
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,20 @@ class CorrelationIdMiddleware
1414
* Handle an incoming request.
1515
*
1616
* @param \Illuminate\Http\Request $request
17-
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
18-
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
17+
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
18+
* @return \Symfony\Component\HttpFoundation\Response
1919
*/
2020
public function handle(Request $request, Closure $next): Response
2121
{
2222
if ($this->shouldOverride($request) || ! $request->hasHeader(CorrelationIdServiceProvider::getCorrelationIdHeaderName())) {
2323
$request->headers->set(CorrelationIdServiceProvider::getCorrelationIdHeaderName(), $this->generateCorrelationId($request));
2424
}
2525

26-
return $next($request)->header(CorrelationIdServiceProvider::getCorrelationIdHeaderName(), $request->getCorrelationId());
26+
$response = $next($request);
27+
28+
$response->headers->set(CorrelationIdServiceProvider::getCorrelationIdHeaderName(), $request->getCorrelationId());
29+
30+
return $response;
2731
}
2832

2933
protected function generateCorrelationId(Request $request): string

tests/Feature/ClientRequestIdMiddlewareTest.php

+15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Http\Request;
88
use Illuminate\Http\Response;
99
use Illuminate\Support\Str;
10+
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1011

1112
class ClientRequestIdMiddlewareTest extends TestCase
1213
{
@@ -24,4 +25,18 @@ public function test_adds_request_id_to_response_header(): void
2425
$this->assertTrue($response->headers->has('Request-ID'));
2526
$this->assertEquals($uuid, $response->headers->get('Request-ID'));
2627
}
28+
29+
public function test_works_with_binary_file_response(): void
30+
{
31+
$uuid = Str::orderedUuid();
32+
33+
$request = new Request();
34+
$request->headers->set('Request-ID', $uuid);
35+
$response = (new ClientRequestIdMiddleware())->handle($request, function ($request) {
36+
return new BinaryFileResponse(__DIR__.'/../fixtures/dummy.pdf');
37+
});
38+
39+
$this->assertTrue($response->headers->has('Request-ID'));
40+
$this->assertEquals($uuid, $response->headers->get('Request-ID'));
41+
}
2742
}

tests/Feature/CorrelationIdMiddlewareTest.php

+13
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Http\Request;
88
use Illuminate\Http\Response;
99
use Illuminate\Support\Str;
10+
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1011

1112
class CorrelationIdMiddlewareTest extends TestCase
1213
{
@@ -36,4 +37,16 @@ public function test_adds_response_correlation_id_header(): void
3637
$this->assertTrue($response->headers->has('Correlation-ID'));
3738
$this->assertEquals($response->headers->get('Correlation-ID'), $request->header('Correlation-ID'));
3839
}
40+
41+
public function test_works_with_binary_file_response(): void
42+
{
43+
$request = new Request();
44+
45+
$response = (new CorrelationIdMiddleware())->handle($request, function ($request) {
46+
return new BinaryFileResponse(__DIR__.'/../fixtures/dummy.pdf');
47+
});
48+
49+
$this->assertTrue($response->headers->has('Correlation-ID'));
50+
$this->assertEquals($response->headers->get('Correlation-ID'), $request->header('Correlation-ID'));
51+
}
3952
}

tests/fixtures/dummy.pdf

13 KB
Binary file not shown.

0 commit comments

Comments
 (0)