From cb0e609fa4cab9409de2cf475dfc58ccf46a9c9d Mon Sep 17 00:00:00 2001 From: Ralf Eggert Date: Sun, 5 Nov 2017 17:21:55 +0100 Subject: [PATCH] Allow requests without session data --- src/Request/AlexaRequest.php | 26 +++++++++---------- src/Request/AlexaRequestInterface.php | 8 +++--- .../RequestType/RequestTypeFactory.php | 20 ++++++++------ test/Request/AlexaRequestTest.php | 2 +- .../CertificateValidatorFactoryTest.php | 2 +- .../Certificate/CertificateValidatorTest.php | 2 +- test/Session/SessionContainerTest.php | 2 +- 7 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/Request/AlexaRequest.php b/src/Request/AlexaRequest.php index 3cb8b39..418a650 100644 --- a/src/Request/AlexaRequest.php +++ b/src/Request/AlexaRequest.php @@ -44,22 +44,22 @@ class AlexaRequest implements AlexaRequestInterface /** * AlexaRequest constructor. * - * @param string $version - * @param SessionInterface $session - * @param RequestTypeInterface $request - * @param ContextInterface $context - * @param string $rawRequestData + * @param string $version + * @param RequestTypeInterface $request + * @param SessionInterface|null $session + * @param ContextInterface|null $context + * @param string $rawRequestData */ public function __construct( string $version, - SessionInterface $session, RequestTypeInterface $request, + SessionInterface $session = null, ContextInterface $context = null, string $rawRequestData ) { $this->version = $version; - $this->session = $session; $this->request = $request; + $this->session = $session; $this->context = $context; $this->rawRequestData = $rawRequestData; } @@ -73,19 +73,19 @@ public function getVersion(): string } /** - * @return SessionInterface + * @return RequestTypeInterface */ - public function getSession(): SessionInterface + public function getRequest(): RequestTypeInterface { - return $this->session; + return $this->request; } /** - * @return RequestTypeInterface + * @return SessionInterface */ - public function getRequest(): RequestTypeInterface + public function getSession() { - return $this->request; + return $this->session; } /** diff --git a/src/Request/AlexaRequestInterface.php b/src/Request/AlexaRequestInterface.php index 3df7dca..2256d89 100644 --- a/src/Request/AlexaRequestInterface.php +++ b/src/Request/AlexaRequestInterface.php @@ -36,14 +36,14 @@ public function checkApplication(string $applicationId); public function getVersion(): string; /** - * @return SessionInterface + * @return RequestTypeInterface */ - public function getSession(): SessionInterface; + public function getRequest(): RequestTypeInterface; /** - * @return RequestTypeInterface + * @return SessionInterface */ - public function getRequest(): RequestTypeInterface; + public function getSession(); /** * @return ContextInterface|null diff --git a/src/Request/RequestType/RequestTypeFactory.php b/src/Request/RequestType/RequestTypeFactory.php index abd7e05..8a11ded 100644 --- a/src/Request/RequestType/RequestTypeFactory.php +++ b/src/Request/RequestType/RequestTypeFactory.php @@ -45,13 +45,17 @@ public static function createFromData(string $data): AlexaRequest $version = $data['version'] ?? AlexaRequest::DEFAULT_VERSION; - $session = new Session( - $data['session']['new'], - $data['session']['sessionId'], - new SessionApplication($data['session']['application']['applicationId']), - $data['session']['attributes'] ?? [], - new SessionUser($data['session']['user']['userId']) - ); + if (isset($data['session'])) { + $session = new Session( + $data['session']['new'], + $data['session']['sessionId'], + new SessionApplication($data['session']['application']['applicationId']), + $data['session']['attributes'] ?? [], + new SessionUser($data['session']['user']['userId']) + ); + } else { + $session = null; + } if (isset($data['context'])) { $audioPlayer = new AudioPlayer( @@ -255,6 +259,6 @@ public static function createFromData(string $data): AlexaRequest break; } - return new AlexaRequest($version, $session, $request, $context, $rawRequestData); + return new AlexaRequest($version, $request, $session, $context, $rawRequestData); } } diff --git a/test/Request/AlexaRequestTest.php b/test/Request/AlexaRequestTest.php index d6ceee5..a54fa89 100644 --- a/test/Request/AlexaRequestTest.php +++ b/test/Request/AlexaRequestTest.php @@ -59,8 +59,8 @@ public function testInstantiation() $alexaRequest = new AlexaRequest( 'version', - $session, $launchRequest, + $session, $context, $rawRequestData ); diff --git a/test/Request/Certificate/CertificateValidatorFactoryTest.php b/test/Request/Certificate/CertificateValidatorFactoryTest.php index e0579d3..5d4e165 100644 --- a/test/Request/Certificate/CertificateValidatorFactoryTest.php +++ b/test/Request/Certificate/CertificateValidatorFactoryTest.php @@ -128,8 +128,8 @@ private function createAlexaRequest(string $timestamp) return new AlexaRequest( 'version', - $session, $launchRequest, + $session, $context, json_encode($data) ); diff --git a/test/Request/Certificate/CertificateValidatorTest.php b/test/Request/Certificate/CertificateValidatorTest.php index 90caf92..e26b9a5 100644 --- a/test/Request/Certificate/CertificateValidatorTest.php +++ b/test/Request/Certificate/CertificateValidatorTest.php @@ -342,8 +342,8 @@ private function createAlexaRequest(string $timestamp) return new AlexaRequest( 'version', - $session, $launchRequest, + $session, $context, json_encode($data) ); diff --git a/test/Session/SessionContainerTest.php b/test/Session/SessionContainerTest.php index 937e6df..45618fd 100644 --- a/test/Session/SessionContainerTest.php +++ b/test/Session/SessionContainerTest.php @@ -182,8 +182,8 @@ private function createAlexaRequest(): AlexaRequest $alexaRequest = new AlexaRequest( 'version', - $session, $launchRequest, + $session, $context, $rawRequestData );