Skip to content

Commit 2d94344

Browse files
Merge pull request #2854 from stobrien89/tracemiddleware-patch
bugfix: trace middleware
2 parents 1fa17db + 23066ef commit 2d94344

File tree

3 files changed

+43
-12
lines changed

3 files changed

+43
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
{
3+
"type": "bugfix",
4+
"category": "",
5+
"description": "Updates trace middleware such that it does not always expect a request."
6+
}
7+
]

src/TraceMiddleware.php

+13-12
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ class TraceMiddleware
1818
private $prevOutput;
1919
private $prevInput;
2020
private $config;
21-
2221
/** @var Service */
2322
private $service;
2423

@@ -85,7 +84,7 @@ public function __invoke($step, $name)
8584
return function (callable $next) use ($step, $name) {
8685
return function (
8786
CommandInterface $command,
88-
RequestInterface $request = null
87+
$request = null
8988
) use ($next, $step, $name) {
9089
$this->createHttpDebug($command);
9190
$start = microtime(true);
@@ -164,17 +163,19 @@ private function commandArray(CommandInterface $cmd)
164163
];
165164
}
166165

167-
private function requestArray(RequestInterface $request = null)
166+
private function requestArray($request = null)
168167
{
169-
return !$request ? [] : array_filter([
170-
'instance' => spl_object_hash($request),
171-
'method' => $request->getMethod(),
172-
'headers' => $this->redactHeaders($request->getHeaders()),
173-
'body' => $this->streamStr($request->getBody()),
174-
'scheme' => $request->getUri()->getScheme(),
175-
'port' => $request->getUri()->getPort(),
176-
'path' => $request->getUri()->getPath(),
177-
'query' => $request->getUri()->getQuery(),
168+
return !$request instanceof RequestInterface
169+
? []
170+
: array_filter([
171+
'instance' => spl_object_hash($request),
172+
'method' => $request->getMethod(),
173+
'headers' => $this->redactHeaders($request->getHeaders()),
174+
'body' => $this->streamStr($request->getBody()),
175+
'scheme' => $request->getUri()->getScheme(),
176+
'port' => $request->getUri()->getPort(),
177+
'path' => $request->getUri()->getPath(),
178+
'query' => $request->getUri()->getQuery(),
178179
]);
179180
}
180181

tests/TraceMiddlewareTest.php

+23
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
use Aws\Api\Service;
55
use Aws\AwsClient;
66
use Aws\Command;
7+
use Aws\EventBridge\EventBridgeClient;
78
use Aws\Exception\AwsException;
89
use Aws\HandlerList;
10+
use Aws\MockHandler;
911
use Aws\Result;
1012
use Aws\TraceMiddleware;
1113
use GuzzleHttp\Promise\RejectedPromise;
@@ -216,6 +218,27 @@ public function testRedactsSensitiveTraits()
216218
$this->assertStringNotContainsString("SensitiveArray contents also redacted", $str);
217219
}
218220

221+
public function testEmitsForMiddlewareThatDoesNotReturnRequest()
222+
{
223+
224+
$str = '';
225+
$logfn = function ($value) use (&$str) { $str .= $value; };
226+
$handler = new MockHandler();
227+
$handler->append(new Result(['success']));
228+
$client = new EventBridgeClient([
229+
'region' => 'us-west-2',
230+
'handler' => $handler,
231+
'debug' => [
232+
'logfn' => $logfn
233+
]
234+
235+
]);
236+
$result = $client->listRules();
237+
238+
$this->assertStringContainsString("Leaving step build, name 'endpoint-resolution'", $str);
239+
$this->assertEquals('success', $result[0]);
240+
}
241+
219242
public function authStringProvider()
220243
{
221244
return [

0 commit comments

Comments
 (0)