diff --git a/composer.json b/composer.json index d0f3a8d..ba5fb11 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ } ], "require": { + "ext-json": "*", "bref/bref": "^1.2", "clue/arguments": "^2.1", "psr/http-server-handler": "^1.0", diff --git a/src/SymfonyRequestBridge.php b/src/SymfonyRequestBridge.php index 856e176..e1e0c85 100644 --- a/src/SymfonyRequestBridge.php +++ b/src/SymfonyRequestBridge.php @@ -38,6 +38,8 @@ public static function convertRequest(HttpRequestEvent $event, Context $context) 'REQUEST_TIME_FLOAT' => microtime(true), 'REQUEST_URI' => $event->getUri(), 'REMOTE_ADDR' => '127.0.0.1', + 'LAMBDA_INVOCATION_CONTEXT' => json_encode($context), + 'LAMBDA_REQUEST_CONTEXT' => json_encode($event->getRequestContext()), ], fn ($value) => null !== $value); foreach ($event->getHeaders() as $name => $values) { diff --git a/tests/SymfonyRequestBridgeTest.php b/tests/SymfonyRequestBridgeTest.php index 83de7e2..52cc1ac 100644 --- a/tests/SymfonyRequestBridgeTest.php +++ b/tests/SymfonyRequestBridgeTest.php @@ -135,6 +135,19 @@ public function testEmptyUploadedFile() $this->assertSame('bar', $post['foo']); } + public function testLambdaContext() + { + $requestContext = ['http' => ['method' => 'GET']]; + $request = SymfonyRequestBridge::convertRequest(new HttpRequestEvent([ + 'requestContext' => $requestContext, + ]), $invocationContext = $this->getContext()); + $this->assertTrue($request->server->has('LAMBDA_INVOCATION_CONTEXT')); + $this->assertTrue($request->server->has('LAMBDA_REQUEST_CONTEXT')); + + $this->assertSame(json_encode($invocationContext), $request->server->get('LAMBDA_INVOCATION_CONTEXT')); + $this->assertSame(json_encode($requestContext), $request->server->get('LAMBDA_REQUEST_CONTEXT')); + } + private function getContext() { return new Context('id', 1000, 'function', 'trace');