Failed Conditions
Push — master ( a96c48...74e563 )
by Florent
02:28
created

ClaimCheckerManager::getCheckers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * The MIT License (MIT)
7
 *
8
 * Copyright (c) 2014-2017 Spomky-Labs
9
 *
10
 * This software may be modified and distributed under the terms
11
 * of the MIT license.  See the LICENSE file for details.
12
 */
13
14
namespace Jose\Component\Checker;
15
16
/**
17
 * Class ClaimCheckerManager.
18
 */
19
final class ClaimCheckerManager
20
{
21
    /**
22
     * @var ClaimChecker[]
23
     */
24
    private $checkers = [];
25
26
    /**
27
     * ClaimCheckerManager constructor.
28
     *
29
     * @param ClaimChecker[] $checkers
30
     */
31
    private function __construct(array $checkers)
32
    {
33
        foreach ($checkers as $checker) {
34
            $this->add($checker);
35
        }
36
    }
37
38
    /**
39
     * @param ClaimChecker[] $checkers
40
     *
41
     * @return ClaimCheckerManager
42
     */
43
    public static function create(array $checkers): self
44
    {
45
        return new self($checkers);
46
    }
47
48
    /**
49
     * @param ClaimChecker $checker
50
     *
51
     * @return ClaimCheckerManager
52
     */
53
    private function add(ClaimChecker $checker): self
54
    {
55
        $claim = $checker->supportedClaim();
56
        $this->checkers[$claim] = $checker;
57
58
        return $this;
59
    }
60
61
    /**
62
     * @return ClaimChecker[]
63
     */
64
    public function getCheckers(): array
65
    {
66
        return $this->checkers;
67
    }
68
69
    /**
70
     * @param array $claims
71
     *
72
     * @return array
73
     */
74
    public function check(array $claims): array
75
    {
76
        foreach ($this->checkers as $claim => $checker) {
77
            if (array_key_exists($claim, $claims)) {
78
                $checker->checkClaim($claims[$claim]);
79
            }
80
        }
81
82
        return $claims;
83
    }
84
}
85