Passed
Pull Request — master (#97)
by Maximilian
04:17
created

InputHandlerEvent::fromAmazonRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 9
nc 2
nop 1
dl 0
loc 13
ccs 10
cts 10
cp 1
crap 2
rs 9.9666
c 1
b 0
f 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Request\Request\GameEngine;
6
7
use MaxBeckers\AmazonAlexa\Helper\PropertyHelper;
8
use MaxBeckers\AmazonAlexa\Request\Request\AbstractRequest;
9
use MaxBeckers\AmazonAlexa\Request\Request\GameEngine\Event\Event;
10
use MaxBeckers\AmazonAlexa\Request\Request\Standard\StandardRequest;
11
12
class InputHandlerEvent extends StandardRequest
13
{
14
    public const TYPE = 'GameEngine.InputHandlerEvent';
15
16
    /**
17
     * @param \DateTime|null $timestamp Request timestamp
18
     * @param string|null $token Request token
19
     * @param string|null $requestId Request identifier
20
     * @param string|null $locale Request locale
21
     * @param string|null $originatingRequestId ID of the originating request
22
     * @param Event[] $events Array of game engine events
23
     */
24
    public function __construct(
25
        ?\DateTime $timestamp = null,
26
        ?string $token = null,
27
        ?string $requestId = null,
28
        ?string $locale = null,
29
        public ?string $originatingRequestId = null,
30
        public array $events = [],
31
    ) {
32
        parent::__construct(
33
            type: self::TYPE,
34
            timestamp: $timestamp,
35
            token: $token,
36
            requestId: $requestId,
37
            locale: $locale
38
        );
39
    }
40
41 1
    public static function fromAmazonRequest(array $amazonRequest): AbstractRequest
42
    {
43 1
        $events = [];
44 1
        foreach ($amazonRequest['events'] as $event) {
45 1
            $events[] = Event::fromAmazonRequest($event);
46
        }
47
48 1
        return new self(
49 1
            timestamp: self::getTime(PropertyHelper::checkNullValueStringOrInt($amazonRequest, 'timestamp')),
50 1
            requestId: PropertyHelper::checkNullValueString($amazonRequest, 'requestId'),
51 1
            locale: PropertyHelper::checkNullValueString($amazonRequest, 'locale'),
52 1
            originatingRequestId: PropertyHelper::checkNullValueString($amazonRequest, 'originatingRequestId'),
53 1
            events: $events,
54 1
        );
55
    }
56
}
57