ConnectionsResponseRequest::fromAmazonRequest()   A
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 8
nc 1
nop 1
dl 0
loc 10
ccs 9
cts 9
cp 1
crap 3
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Request\Request\System;
6
7
use MaxBeckers\AmazonAlexa\Helper\PropertyHelper;
8
use MaxBeckers\AmazonAlexa\Request\Request\AbstractRequest;
9
10
class ConnectionsResponseRequest extends SystemRequest
11
{
12
    public const TYPE = 'Connections.Response';
13
    public const NAME_UPSELL = 'Upsell';
14
    public const NAME_BUY = 'Buy';
15
    public const NAME_CANCEL = 'CANCEL';
16
17
    /**
18
     * @param \DateTime|null $timestamp Request timestamp
19
     * @param string|null $requestId Request identifier
20
     * @param string|null $locale Request locale
21
     * @param string|null $name Connection response name
22
     * @param string|null $token Connection response token
23
     * @param Status|null $status Connection response status
24
     * @param Payload|null $payload Connection response payload
25
     */
26 1
    public function __construct(
27
        ?\DateTime $timestamp = null,
28
        ?string $requestId = null,
29
        ?string $locale = null,
30
        public ?string $name = null,
31
        public ?string $token = null,
32
        public ?Status $status = null,
33
        public ?Payload $payload = null,
34
    ) {
35 1
        parent::__construct(self::TYPE, $timestamp, $this->token, $requestId, $locale);
36
    }
37
38 1
    public static function fromAmazonRequest(array $amazonRequest): AbstractRequest
39
    {
40 1
        return new self(
41 1
            timestamp: self::getTime(PropertyHelper::checkNullValueStringOrInt($amazonRequest, 'timestamp')),
42 1
            requestId: PropertyHelper::checkNullValueString($amazonRequest, 'requestId'),
43 1
            locale: PropertyHelper::checkNullValueString($amazonRequest, 'locale'),
44 1
            name: PropertyHelper::checkNullValueString($amazonRequest, 'name'),
45 1
            token: PropertyHelper::checkNullValueString($amazonRequest, 'token'),
46 1
            status: isset($amazonRequest['status']) ? Status::fromAmazonRequest($amazonRequest['status']) : null,
47 1
            payload: isset($amazonRequest['payload']) ? Payload::fromAmazonRequest($amazonRequest['payload']) : null,
48 1
        );
49
    }
50
}
51