Passed
Push — 0.x ( 689b78...ec4bb9 )
by Pavel
02:17
created

JWKs::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DigitalCz\OpenIDConnect\Discovery;
6
7
use InvalidArgumentException;
8
use JsonSerializable;
9
10
class JWKs implements JsonSerializable
11
{
12
    /** @var JWK[] */
13
    private array $keys;
14
15
    /** @param JWK[] $keys */
16
    public function __construct(array $keys)
17
    {
18
        $this->keys = $keys;
19
    }
20
21
    /** @param array<string, mixed> $values */
22
    public static function fromArray(array $values): self
23
    {
24
        $keys = $values['keys'] ?? throw new InvalidArgumentException('Key "keys" is missing');
25
26
        return new self(array_map(static fn (array $keyData) => new JWK($keyData), $keys));
27
    }
28
29
    /** @return JWK[] */
30
    public function keys(): array
31
    {
32
        return $this->keys;
33
    }
34
35
    /** @return array{keys: array<int, array<string, string>>} */
36
    public function toArray(): array
37
    {
38
        return ['keys' => array_map(static fn (JWK $key) => $key->all(), $this->keys())];
39
    }
40
41
    /** @return array{keys: array<int, array<string, string>>} */
42
    public function jsonSerialize(): array
43
    {
44
        return $this->toArray();
45
    }
46
}
47