Test Failed
Push — master ( e66f09...2b1c87 )
by Laurens
03:56
created

ProtectFactory::fromData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 18
rs 9.6666
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LauLamanApps\NestApi\Client\Factory\Device;
6
7
use DateTimeImmutable;
8
use LauLamanApps\NestApi\Client\__shared\AbstractFactory;
9
use LauLamanApps\NestApi\Client\Device\Protect;
10
use LauLamanApps\NestApi\Client\Device\Protect\AlarmState;
11
use LauLamanApps\NestApi\Client\Device\Protect\BatteryHealth;
12
use LauLamanApps\NestApi\Client\Device\Protect\UiColorState;
13
use LauLamanApps\NestApi\NestClient;
14
15
final class ProtectFactory extends AbstractFactory implements ProtectFactoryInterface
16
{
17
    public function fromData(array $data, NestClient $client): Protect
18
    {
19
        return new Protect(
20
            $this->extractString('device_id', $data),
21
            $this->extractString('where_id', $data),
22
            $this->extractString('structure_id', $data),
23
            $this->extractString('name', $data),
24
            $this->extractString('name_long', $data),
25
            $this->extractString('locale', $data),
26
            $this->extractString('software_version', $data),
27
            $this->extractBoolean('is_online', $data),
28
            new DateTimeImmutable($this->extractString('last_connection', $data)),
29
            BatteryHealth::get($this->extractString('battery_health', $data)),
30
            AlarmState::get($this->extractString('co_alarm_state', $data)),
31
            AlarmState::get($this->extractString('smoke_alarm_state', $data)),
32
            UiColorState::get($this->extractString('ui_color_state', $data)),
33
            $this->extractBoolean('is_manual_test_active', $data),
34
            new DateTimeImmutable($this->extractString('last_manual_test_time', $data))
35
        );
36
    }
37
}
38